document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /**
  2.  * Main code of firmware
  3.  */
  4. #include "stm32f10x.h"
  5. #include "core_cm3.h"
  6. /* General defines */
  7. #define LED_PORT GPIOC
  8. #define IO_PORT GPIOA
  9. #define BUTTON (1 << 0)
  10. #define LED_BLUE (1 << 8)
  11. #define LED_GREEN (1 << 9)
  12. /* user status flag */
  13. volatile unsigned char status_flag;
  14. void main();
  15. /* Simple delay function */
  16. void delay_ms(unsigned int delay) {
  17.     volatile unsigned int delay_tick = delay * 2000;
  18.     while (delay_tick--);
  19. }
  20. /* chage user flag */
  21. void change_flag(void) {
  22.     status_flag ^= 1;
  23.     delay_ms(100);
  24. }
  25. /* Main function */
  26. void main(void) {
  27.         //status_flag = 0;
  28.         /* setup i/o port c */
  29.         RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
  30.         LED_PORT->CRH |= GPIO_CRH_MODE8_0 | GPIO_CRH_MODE9_0;
  31.         LED_PORT->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_CNF9);
  32.         /* setup i/o port a */
  33.         RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN;
  34.         /* setup AFIO andEXTI */
  35.         AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI0_PA;
  36.         EXTI->IMR |= (1 << 0);
  37.         EXTI->FTSR |= (1 << 0);
  38.         /* enable EXTI0 interrupt */
  39.         NVIC_EnableIRQ(EXTI0_IRQn);
  40.         /* enable leds */
  41.         LED_PORT->ODR = LED_BLUE;// | LED_GREEN;
  42.         /* infinity loop */
  43.         //while (1);
  44.         while (1) {
  45.             if (status_flag & 1) {
  46.                 /* disable leds */
  47.                 LED_PORT->ODR &= ~LED_BLUE;
  48.                 LED_PORT->ODR |= LED_GREEN;
  49.                 /* delay ~500ms */
  50.                 delay_ms(500);
  51.                 /* enable leds */
  52.                 LED_PORT->ODR |= LED_BLUE;
  53.                 LED_PORT->ODR &= ~LED_GREEN;
  54.                 /* delay ~500ms */
  55.                 delay_ms(500);
  56.             }
  57.             else {
  58.                 /* disable leds */
  59.                 LED_PORT->ODR &= ~(LED_BLUE | LED_GREEN);
  60.                 /* delay ~500ms */
  61.                 delay_ms(500);
  62.                 /* enable leds */
  63.                 LED_PORT->ODR |= LED_BLUE | LED_GREEN;
  64.                 /* delay ~500ms */
  65.                 delay_ms(500);
  66.             }
  67.         }
  68. }
');