Advertisement
Guest User

pastebinpastebinisdhf

a guest
Jan 23rd, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.25 KB | None | 0 0
  1. /**
  2. ******************************************************************************
  3. * @file GPIO/GPIO_Toggle/main.c
  4. * @author P. Szulim
  5. * @version V1.0.0
  6. * @date 10-Listopad-2015
  7. * @brief Program changes periodicaly brightnes of LED lighting
  8. ******************************************************************************
  9. *
  10. ******************************************************************************
  11. */
  12.  
  13.  
  14. /* Header files -------------------------------------------------------------------*/
  15. #include "stm32f30x.h"
  16. #include "stm32f30x_gpio.h"
  17. #include "stm32f30x_rcc.h"
  18.  
  19. /* Private typedef -----------------------------------------------------------*/
  20. /* Private define ------------------------------------------------------------*/
  21. /* Private macro -------------------------------------------------------------*/
  22. /* Private variables ---------------------------------------------------------*/
  23. /* Private function prototypes -----------------------------------------------*/
  24. void Delay(void);
  25. /* Private functions ---------------------------------------------------------*/
  26.  
  27. /**
  28. * @brief Main program.
  29. * @param None
  30. * @retval None
  31. */
  32. int main(void)
  33. {
  34. /* Configuration structure definition */
  35. GPIO_InitTypeDef GPIO_InitStructure;
  36. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  37. TIM_OCInitTypeDef TIM_OCInitStructure;
  38.  
  39. /* GPIOE Periph clock enable */
  40. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);
  41.  
  42. /* Alternative configuration for pin PE9 */
  43. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14;
  44. /* alternative mode for pin */
  45. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  46. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  47. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  48. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
  49. GPIO_Init(GPIOE, &GPIO_InitStructure);
  50.  
  51. /* Alternative function for pin - TIM1 take control of this pin */
  52. /* For more information go to the DS */
  53. GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_2);
  54. GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_2);
  55. GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_2);
  56. GPIO_PinAFConfig(GPIOE, GPIO_PinSource14, GPIO_AF_2);
  57. /************* Timer configuration ******************/
  58.  
  59. /* TIM1 clock activation */
  60. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);
  61.  
  62. /* Main counter activation */
  63. TIM_TimeBaseStructure.TIM_Prescaler = 720; //720 means, that clock signal will be divided 720 times.
  64. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //counter count up
  65. TIM_TimeBaseStructure.TIM_Period = 1000; //counter count from 0 to 1000
  66. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //additional clock divider disabled
  67. TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //additional mode disabled
  68. /* Initialisation of timer */
  69. TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  70.  
  71. /* Timer channel struct initiation */
  72. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM mode for this channel
  73. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //channel act on external pin
  74. TIM_OCInitStructure.TIM_Pulse = 0; //PWM duty equal 0%.
  75. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //additional function
  76. TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//additional function
  77. /* Configure channel 1 */
  78. TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  79. TIM_OC2Init(TIM1, &TIM_OCInitStructure);
  80. TIM_OC3Init(TIM1, &TIM_OCInitStructure);
  81. TIM_OC4Init(TIM1, &TIM_OCInitStructure);
  82. /* Run timer*/
  83. TIM_Cmd(TIM1, ENABLE);
  84. /* activate channel output */
  85. TIM_CtrlPWMOutputs(TIM1, ENABLE);
  86.  
  87. /* program changes led brightnes */
  88. while (1){
  89. /* set PWM on 10% (100/1000)*/
  90. TIM_SetCompare1(TIM1,100);
  91. Delay();
  92. /* set PWM duty on 20% */
  93. TIM_SetCompare1(TIM1,200);
  94. Delay();
  95. /* set PWM duty on 30% */
  96. TIM_SetCompare1(TIM1,300);
  97. Delay();
  98. /* set PWM duty on 40% */
  99. TIM_SetCompare1(TIM1,400);
  100. Delay();
  101. /* set PWM duty on 50% */
  102. TIM_SetCompare1(TIM1,500);
  103. Delay();
  104. /* set PWM duty on 60% */
  105. TIM_SetCompare1(TIM1,600);
  106. Delay();
  107. /* set PWM duty on 70% */
  108. TIM_SetCompare1(TIM1,700);
  109. Delay();
  110. /* set PWM duty on 80% */
  111. TIM_SetCompare1(TIM1,800);
  112. Delay();
  113. /* set PWM duty on 90% */
  114. TIM_SetCompare1(TIM1,900);
  115. Delay();
  116. /* set PWM duty on 100% - direct acces to CCR register */
  117. TIM1->CCR1=1000;
  118. Delay();
  119. /* set PWM on 10% (100/1000)*/
  120. TIM_SetCompare2(TIM1,100);
  121. Delay();
  122. /* set PWM duty on 20% */
  123. TIM_SetCompare2(TIM1,200);
  124. Delay();
  125. /* set PWM duty on 30% */
  126. TIM_SetCompare2(TIM1,300);
  127. Delay();
  128. /* set PWM duty on 40% */
  129. TIM_SetCompare2(TIM1,400);
  130. Delay();
  131. /* set PWM duty on 50% */
  132. TIM_SetCompare2(TIM1,500);
  133. Delay();
  134. /* set PWM duty on 60% */
  135. TIM_SetCompare2(TIM1,600);
  136. Delay();
  137. /* set PWM duty on 70% */
  138. TIM_SetCompare2(TIM1,700);
  139. Delay();
  140. /* set PWM duty on 80% */
  141. TIM_SetCompare2(TIM1,800);
  142. Delay();
  143. /* set PWM duty on 90% */
  144. TIM_SetCompare2(TIM1,900);
  145. Delay();
  146. /* set PWM duty on 100% - direct acces to CCR register */
  147. TIM1->CCR1=1000;
  148. Delay();
  149. /* set PWM on 10% (100/1000)*/
  150. TIM_SetCompare3(TIM1,100);
  151. Delay();
  152. /* set PWM duty on 20% */
  153. TIM_SetCompare3(TIM1,200);
  154. Delay();
  155. /* set PWM duty on 30% */
  156. TIM_SetCompare3(TIM1,300);
  157. Delay();
  158. /* set PWM duty on 40% */
  159. TIM_SetCompare3(TIM1,400);
  160. Delay();
  161. /* set PWM duty on 50% */
  162. TIM_SetCompare3(TIM1,500);
  163. Delay();
  164. /* set PWM duty on 60% */
  165. TIM_SetCompare3(TIM1,600);
  166. Delay();
  167. /* set PWM duty on 70% */
  168. TIM_SetCompare3(TIM1,700);
  169. Delay();
  170. /* set PWM duty on 80% */
  171. TIM_SetCompare3(TIM1,800);
  172. Delay();
  173. /* set PWM duty on 90% */
  174. TIM_SetCompare3(TIM1,900);
  175. Delay();
  176. /* set PWM duty on 100% - direct acces to CCR register */
  177. TIM1->CCR1=1000;
  178. Delay();
  179. /* set PWM on 10% (100/1000)*/
  180. TIM_SetCompare4(TIM1,100);
  181. Delay();
  182. /* set PWM duty on 20% */
  183. TIM_SetCompare4(TIM1,200);
  184. Delay();
  185. /* set PWM duty on 30% */
  186. TIM_SetCompare4(TIM1,300);
  187. Delay();
  188. /* set PWM duty on 40% */
  189. TIM_SetCompare4(TIM1,400);
  190. Delay();
  191. /* set PWM duty on 50% */
  192. TIM_SetCompare4(TIM1,500);
  193. Delay();
  194. /* set PWM duty on 60% */
  195. TIM_SetCompare4(TIM1,600);
  196. Delay();
  197. /* set PWM duty on 70% */
  198. TIM_SetCompare4(TIM1,700);
  199. Delay();
  200. /* set PWM duty on 80% */
  201. TIM_SetCompare4(TIM1,800);
  202. Delay();
  203. /* set PWM duty on 90% */
  204. TIM_SetCompare4(TIM1,900);
  205. Delay();
  206. /* set PWM duty on 100% - direct acces to CCR register */
  207. TIM1->CCR1=1000;
  208. Delay();
  209. }
  210. }
  211.  
  212.  
  213.  
  214. /**
  215. * @brief Delay function.
  216. * @param None
  217. * @retval None
  218. */
  219. void Delay(void){
  220. int i;
  221. for(i=0;i<0x7FFFF;i++);
  222. }
  223.  
  224.  
  225.  
  226. #ifdef USE_FULL_ASSERT
  227.  
  228. /**
  229. * @brief Reports the name of the source file and the source line number
  230. * where the assert_param error has occurred.
  231. * @param file: pointer to the source file name
  232. * @param line: assert_param error line source number
  233. * @retval None
  234. */
  235. void assert_failed(uint8_t* file, uint32_t line)
  236. {
  237. /* User can add his own implementation to report the file name and line number,
  238. ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  239.  
  240. /* Infinite loop */
  241. while (1)
  242. {
  243. }
  244. }
  245. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement