document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /**
  2.  * Main code of firmware
  3.  */
  4. #include "stm32f10x.h"
  5. /* General defines */
  6. #define LED_PORT GPIOC
  7. #define LED_BLUE (1 << 8)
  8. #define LED_GREEN (1 << 9)
  9. void main();
  10. /* provided by linker script */
  11. extern unsigned long _estack;
  12. /* Reset handler */
  13. void Reset_Handler(void) {
  14.     main();
  15. }
  16. /* Table of Cortex vectors */
  17. void *vector_table[] __attribute__ ((section(".vectors"))) = {
  18.     &_estack,
  19.     Reset_Handler,
  20. };
  21. /* Simple delay function */
  22. void delay_ms(unsigned int delay) {
  23.     volatile unsigned int delay_tick = delay * 2000;
  24.     while (delay_tick--);
  25. }
  26. /* Main function */
  27. void main(void) {
  28.     /* setup i/o port */
  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.     /* enable leds */
  33.     LED_PORT->ODR = LED_BLUE | LED_GREEN;
  34.     /* infinity loop */
  35.     while (1) {
  36.             /* disable leds */
  37.             LED_PORT->ODR &= ~(LED_BLUE | LED_GREEN);
  38.             /* delay ~500ms */
  39.             delay_ms(500);
  40.             /* enable leds */
  41.             LED_PORT->ODR |= LED_BLUE | LED_GREEN;
  42.             /* delay ~500ms */
  43.             delay_ms(500);
  44.         }
  45. }
');