GD32L233 lptimer失效问题

[复制链接]
 楼主| Sam131208 发表于 2024-12-30 10:40 | 显示全部楼层 |阅读模式
本帖最后由 Sam131208 于 2024-12-30 11:14 编辑

  lptimer用作时间同步,比较寄存器(LPTIMER_CMPV)用来定时触发,自动重载寄存器(LPTIMER_CAR)固定为0xFFFFFFFF,LPTIMER_CAR 和LPTIMER_CMPV 影子寄存器禁止使能。
  当lptimer在计时中,插入一个新的定时器,更新LPTIMER_CMPV 失败,中断丢失:
   1).   定时器已经设定在0x78000触发比较中断。
   2).   (假设)定时器在计时到0x76000时, 更新比较定时器到0x76020.
   3).   定时器中断丢失,停止debug, 查看比较定时器设定为0x78000,没有被更新为0x76020,而且也没有在0x78000处触发中断(定时器计数器已经远远大于它)。

   比较寄存器更新操作指令:

  1. static void timer_clock_set_timeout(int32_t ticks, bool idle){
  2.    
  3.     do{
  4.         last_count_read = LPTIMER_CNT(LPTIMERN);
  5.     }while(last_count_read != LPTIMER_CNT(LPTIMERN));
  6.     LPTIMER_CMPV(LPTIMERN) = (uint32_t)(last_count_read + CLAMP(ticks, LPTIM_GUARD_VALUE, 0x7FFFFFFF));
  7. }

stormwind123 发表于 2025-1-25 15:10 | 显示全部楼层
可能是硬件连接问题
elephant00 发表于 2025-1-25 15:30 | 显示全部楼层
检查软件库版本是不是最新的
laocuo1142 发表于 2025-1-25 16:00 | 显示全部楼层
检查外部时钟源的连接和信号质量。
jcky001 发表于 2025-1-25 16:31 | 显示全部楼层
如果GD32L233处于低功耗模式,请检查低功耗模式的配置是否正确。
cr315 发表于 2025-1-25 17:23 | 显示全部楼层
检查初始化代码
flycamelaaa 发表于 2025-1-25 19:00 | 显示全部楼层
时钟配置可能有错误吧
两只袜子 发表于 2025-1-25 19:30 | 显示全部楼层
中断优先级和中断使能是否已经正确配置。
classroom 发表于 2025-1-25 20:00 | 显示全部楼层
检查LPTIMER的预分频器、计数器模式、输出模式等参数配置是否正确。
梅花香自123 发表于 2025-2-28 16:12 | 显示全部楼层
这种情况的发生可能与定时器计时和寄存器更新机制相关。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

131

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

42

主题

131

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部