Advertisement
teplofizik

main.c (stm32f0, led blink)

Nov 9th, 2012
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. //
  2. // Пример проекта для платы STM32F0Discovery
  3. // Моргание светодиодом
  4. // teplofizik
  5. //
  6.  
  7. #include <stm32f0xx.h>
  8.  
  9. // Инициализация подсистемы тактирования
  10. void SystemInit(void)
  11. {
  12.     // Инициализируем периферию пока что здесь, хотя это и немного неправильно
  13.    
  14.     // Включить тактирование порта C
  15.     RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
  16.    
  17.     // 9, 10 выводы - на выход (general purpose output mode)
  18.     GPIOC->MODER |= GPIO_MODER_MODER9_0 | GPIO_MODER_MODER10_0;
  19. }
  20.  
  21. // Программная задержка
  22. void delay(uint32_t Value)
  23. {
  24.     volatile uint32_t Counter = Value;
  25.    
  26.     // Чтоб даже при оптимизации не выбросили данный цикл
  27.     while(Counter--) { }
  28. }
  29.  
  30. // Засветить светодиод
  31. void led_On(void)
  32. {
  33.     GPIOC->BSRR = GPIO_BSRR_BS_9;  // Установить бит 9
  34. }
  35.  
  36. // Погасить светодиод
  37. void led_Off(void)
  38. {
  39.     GPIOC->BSRR = GPIO_BSRR_BR_9;  // Сбросить бит 9
  40. }
  41.  
  42. // Главный цикл
  43. int main(void)
  44. {
  45.     while(1)
  46.     {
  47.         // Моргание!
  48.         led_On();
  49.         delay(1000000UL);
  50.         led_Off();
  51.         delay(1000000UL);
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement