Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. #include <stdint.h>
  2. #include "tm4c123gh6pm.h"
  3. //#include "emp_type.h"
  4. #include "string.h"
  5. #define SYSTICK_RELOAD_VALUE 80000 // 5 mS
  6. #define NVIC_INT_CTRL_PEND_SYST 0x04000000 // Pend a systick int
  7. #define NVIC_INT_CTRL_UNPEND_SYST 0x02000000 // Unpend a systick int
  8. #define SYSTICK_PRIORITY 0x7E
  9.  
  10. static int a;
  11.  
  12. void SysTick_Handler(void)
  13. /*****************************************************************************
  14. * Function : See module specification (.h-file).
  15. *****************************************************************************/
  16. {
  17. // Hardware clears systick int reguest
  18. a++;
  19. // Do your stuff
  20. }
  21.  
  22. void enable_global_int()
  23. {
  24. // enable interrupts.
  25. __asm("cpsie i");
  26. }
  27.  
  28. void disable_global_int()
  29. {
  30. // disable interrupts.
  31. __asm("cpsid i");
  32. }
  33.  
  34.  
  35. void SysTickInit()
  36. {
  37.  
  38. // Disable systick timer
  39. NVIC_ST_CTRL_R &= ~(NVIC_ST_CTRL_ENABLE);
  40.  
  41. // Set current systick counter to reload value
  42. NVIC_ST_CURRENT_R = SYSTICK_RELOAD_VALUE;
  43. // Set Reload value, Systick reload register
  44. NVIC_ST_RELOAD_R = SYSTICK_RELOAD_VALUE;
  45.  
  46. // NVIC systick setup, vector number 15
  47. // Clear pending systick interrupt request
  48. NVIC_INT_CTRL_R |= NVIC_INT_CTRL_UNPEND_SYST;
  49.  
  50. // Set systick priority to 0x10, first clear then set.
  51. NVIC_SYS_PRI3_R &= ~(NVIC_SYS_PRI3_TICK_M);
  52. NVIC_SYS_PRI3_R |= (NVIC_SYS_PRI3_TICK_M & (SYSTICK_PRIORITY<<NVIC_SYS_PRI3_TICK_S));
  53.  
  54. // Select systick clock source, Use core clock
  55. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_CLK_SRC;
  56.  
  57. // Enable systick interrupt
  58. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_INTEN;
  59.  
  60. // Enable and start timer
  61. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  62. }
  63.  
  64.  
  65. int main(void)
  66. {
  67. enable_global_int();
  68. int dummy;
  69. SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
  70.  
  71. dummy = SYSCTL_RCGC2_R;
  72.  
  73. GPIO_PORTF_DIR_R=0x0E; //DDRA
  74.  
  75. GPIO_PORTF_DEN_R=0x1E; //like PORTA
  76.  
  77. GPIO_PORTF_LOCK_R = 0x4C4F434B; // Unlock the CR register
  78. GPIO_PORTF_CR_R = 0xFF; // Enable overwrite of PUR to FP0
  79.  
  80. GPIO_PORTF_PUR_R=0x10; //PULL UP HERE
  81. int i=0;
  82. SysTickInit();
  83. int aa,or,sw,n;
  84. aa=or=sw=n=0;
  85. GPIO_PORTF_DATA_R=0x00;
  86. while(1)
  87. {
  88. if(n==2)or=1;
  89.  
  90. if (GPIO_PORTF_DATA_R & 0x10)
  91. {
  92. while(aa==1) //auto mode
  93. {
  94. n=0; //set buttons clicked to 0
  95. while(1)
  96. {
  97. if (n>0)aa=0; //if button is pushed, it exits auto mode
  98.  
  99. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE; //enables systick
  100.  
  101. if (a==40) //200 ms
  102. {
  103. if(GPIO_PORTF_DATA_R!=0x0E) //if it is at the end, goes to 0x00;
  104. {
  105. GPIO_PORTF_DATA_R=0x00;
  106. }
  107. else
  108. {
  109. GPIO_PORTF_DATA_R++; //next diode
  110. }
  111.  
  112. a=0; //sets the systick counts to 0
  113. break; //next loop of while, 200 ms has elapsed
  114. }
  115. }
  116. }
  117. while(or==1)
  118. {
  119.  
  120. }
  121. }
  122. else
  123. {
  124. n++;
  125. //GPIO_PORTF_DATA_R|=0x01;
  126. //GPIO_PORTF_DATA_R++;
  127. //GPIO_PORTF_DATA_R&=~(0x01);
  128. switch (i)
  129. {
  130. case 0:
  131. GPIO_PORTF_DATA_R=0x00;
  132. i++;
  133.  
  134. while(a!=200)
  135. {
  136. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  137. }
  138.  
  139. break;
  140.  
  141. case 1:
  142. GPIO_PORTF_DATA_R=0x02;
  143. while(a!=200)
  144. {
  145. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  146. }
  147. break;
  148.  
  149. case 2:
  150. GPIO_PORTF_DATA_R=0x04;
  151. while(a!=200)
  152. {
  153. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  154. }
  155. break;
  156.  
  157. case 3:
  158. GPIO_PORTF_DATA_R=0x06;
  159. while(a!=200)
  160. {
  161. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  162. }
  163. break;
  164.  
  165. case 4:
  166. GPIO_PORTF_DATA_R=0x08;
  167. while(a!=200)
  168. {
  169. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  170. }
  171. break;
  172.  
  173. case 5:
  174. GPIO_PORTF_DATA_R=0x0A;
  175. while(a!=200)
  176. {
  177. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  178. }
  179. break;
  180.  
  181. case 6:
  182. GPIO_PORTF_DATA_R=0x0C;
  183. while(a!=200)
  184. {
  185. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  186. }
  187. break;
  188.  
  189. case 7:
  190. GPIO_PORTF_DATA_R=0x0E;
  191. while(a!=200)
  192. {
  193. NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
  194. }
  195. i=0;
  196. break;
  197. }
  198. if (i!=0)i++;
  199.  
  200. }
  201. }
  202. return(0);
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement