因需要研究制作STM32G0xx BSP模板, 记录并保存, 以免遗忘
bsp/stm32/libraries/HAL_Drivers/config/g0/uart_config.h
LPUART1_CONFIG
部分配置, 因原有irq_type
变化,
以及LPUART1_IRQHandler
宏造成LPUART1中断时无法进入正确中断Handler, 遂修改为:
#if defined(BSP_USING_LPUART1) #ifndef LPUART1_CONFIG #define LPUART1_CONFIG \ { \ .name = "lpuart1", \ .Instance = LPUART1, \ .irq_type = LPUART1_IRQn, \ } // #define LPUART1_IRQHandler USART3_4_LPUART1_IRQHandler #endif /* LPUART1_CONFIG */
BSP模板
参照l0系列模板, 以及stm32g070 BSP, 修改部分参数即可
问题1. iwdg喂狗就重启
将drv_wdt.c
中, rt_wdt_init
里面, stm32_wdt.hiwdg.Init.Window = 0x00000FFF;
这一句的宏定义里加上 || defined(SOC_SERIES_STM32G0)
问题2.Error: L6218E: Undefined symbol __user_cmpxchg_4 (referred from arm_sync_4.o).
参考keil: https://www.keil.com/support/man/docs/armcc/armcc_chr1359125006834.htm
需要自己实现__user_cmpxchg_1
__user_cmpxchg_2
__user_cmpxchg_4
,
其中给出了__user_cmpxchg_4实现
int __user_cmpxchg_4(unsigned int *ptr, unsigned int old, unsigned int new) { if (*ptr == old) { *ptr = new; return 0; } else { return 1; } }