最新消息:

RT-Thread 4.0.3 STM32G0xx BSP模板及后续问题

C ZmmFly 362浏览 0评论

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

转载请注明:神奇海域 » RT-Thread 4.0.3 STM32G0xx BSP模板及后续问题

发表我的评论
取消评论

Protected by WP Anti Spam
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址