Advertisement
dtung

GPIO speed final

Sep 25th, 2020
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. #include "stm32f10x.h"
  2.  
  3. void gpio_init(void);
  4. void mco_init(void);
  5.  
  6. void gpio_init() {
  7. // enable PORTC GPIO13 to output push-pull with max_speed 50MHz
  8. RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
  9. GPIOC->CRH &= ~(GPIO_CRH_CNF13|GPIO_CRH_MODE13);
  10. GPIOC->CRH |= GPIO_CRH_MODE13;
  11. }
  12.  
  13. void mco_init() {
  14. RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
  15. GPIOA->CRH &= ~(GPIO_CRH_CNF8|GPIO_CRH_MODE8);
  16. GPIOA->CRH |= GPIO_CRH_CNF8_1|GPIO_CRH_MODE8;
  17. RCC->CFGR &= ~RCC_CFGR_MCO;
  18. RCC->CFGR |= RCC_CFGR_MCO_SYSCLK;
  19. }
  20.  
  21. int main() {
  22. gpio_init();
  23. mco_init();
  24. uint32_t r = GPIOC->ODR;
  25.  
  26. for (;;) {
  27. r ^= GPIO_ODR_ODR13;
  28. GPIOC->ODR = r;
  29. r ^= GPIO_ODR_ODR13;
  30. GPIOC->ODR = r;
  31. r ^= GPIO_ODR_ODR13;
  32. GPIOC->ODR = r;
  33. r ^= GPIO_ODR_ODR13;
  34. GPIOC->ODR = r;
  35. r ^= GPIO_ODR_ODR13;
  36. GPIOC->ODR = r;
  37. r ^= GPIO_ODR_ODR13;
  38. GPIOC->ODR = r;
  39. r ^= GPIO_ODR_ODR13;
  40. GPIOC->ODR = r;
  41. r ^= GPIO_ODR_ODR13;
  42. GPIOC->ODR = r;
  43. r ^= GPIO_ODR_ODR13;
  44. GPIOC->ODR = r;
  45. r ^= GPIO_ODR_ODR13;
  46. GPIOC->ODR = r;
  47. }
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement