因需要研究制作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;
}
}