app.c (1545B)
1 #include "app/os.h" 2 #include "libopencm3/cm3/scb.h" 3 #include "shared/protocol.h" 4 #include "shared/mem-blocks.h" 5 #include "shared/drv-gpio.h" 6 #include "shared/drv-rcc.h" 7 #include "shared/drv-usart-dma.h" 8 #include "app/packet.h" 9 10 #include <string.h> 11 12 #define DBGMCU_APB1_FZ MMIO32(DBGMCU_BASE + 0x08) 13 #define DBGMCU_APB2_FZ MMIO32(DBGMCU_BASE + 0x0C) 14 15 // symbols related to ccm memory area in linker script 16 extern unsigned _ccm_loadaddr, _sccmram, _eccmram; 17 18 // Copy data from rom/ram to ccm 19 static void initialize_ccm(void) { 20 volatile unsigned *src, *dest; 21 for (src = &_ccm_loadaddr, dest = &_sccmram; dest < &_eccmram; src++, dest++) { 22 *dest = *src; 23 } 24 } 25 26 static void vector_table_setup(void) { SCB_VTOR = MEM_BL_SIZE + MEM_PARAMS_SIZE; } 27 28 int main(void) { 29 initialize_ccm(); 30 vector_table_setup(); 31 res_rcc_setup(); 32 res_gpio_setup(); 33 res_usart_init(); 34 res_usart_dma_gsm_setup(); 35 res_usart_dma_dbg_setup(); 36 packet_init(); 37 38 os_init_rtos(); 39 40 DBGMCU_APB1_FZ |= 0x0002; // stop TIM3 on debug breaks 41 DBGMCU_APB2_FZ |= 0x0001; // stop TIM1 on debug breaks 42 43 vTaskStartScheduler(); 44 while (1) { 45 } 46 47 return 0; 48 } 49 50 // Dummy implementation for syscalls to avoid nosys warnings 51 void _close(void); 52 void _fstat(void); 53 void _getpid(void); 54 void _isatty(void); 55 void _kill(void); 56 void _lseek(void); 57 void _read(void); 58 void _write(void); 59 60 void _close(void) {} 61 void _fstat(void) {} 62 void _getpid(void) {} 63 void _isatty(void) {} 64 void _kill(void) {} 65 void _lseek(void) {} 66 void _read(void) {} 67 void _write(void) {}