打印

GD32L233 lptimer失效问题

[复制链接]
3131|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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处触发中断(定时器计数器已经远远大于它)。

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

static void timer_clock_set_timeout(int32_t ticks, bool idle){
   
    do{
        last_count_read = LPTIMER_CNT(LPTIMERN);
    }while(last_count_read != LPTIMER_CNT(LPTIMERN));
    LPTIMER_CMPV(LPTIMERN) = (uint32_t)(last_count_read + CLAMP(ticks, LPTIM_GUARD_VALUE, 0x7FFFFFFF));
}

使用特权

评论回复
沙发
stormwind123| | 2025-1-25 15:10 | 只看该作者
可能是硬件连接问题

使用特权

评论回复
板凳
elephant00| | 2025-1-25 15:30 | 只看该作者
检查软件库版本是不是最新的

使用特权

评论回复
地板
laocuo1142| | 2025-1-25 16:00 | 只看该作者
检查外部时钟源的连接和信号质量。

使用特权

评论回复
5
jcky001| | 2025-1-25 16:31 | 只看该作者
如果GD32L233处于低功耗模式,请检查低功耗模式的配置是否正确。

使用特权

评论回复
6
cr315| | 2025-1-25 17:23 | 只看该作者
检查初始化代码

使用特权

评论回复
7
flycamelaaa| | 2025-1-25 19:00 | 只看该作者
时钟配置可能有错误吧

使用特权

评论回复
8
两只袜子| | 2025-1-25 19:30 | 只看该作者
中断优先级和中断使能是否已经正确配置。

使用特权

评论回复
9
classroom| | 2025-1-25 20:00 | 只看该作者
检查LPTIMER的预分频器、计数器模式、输出模式等参数配置是否正确。

使用特权

评论回复
10
梅花香自123| | 2025-2-28 16:12 | 只看该作者
这种情况的发生可能与定时器计时和寄存器更新机制相关。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

131

帖子

1

粉丝