打印
[技术问答]

低功耗定时器正在计数的过程中重新计时

[复制链接]
55|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sam131208|  楼主 | 2024-11-20 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   如题,低功耗定时器正在计数的过程中,需要重新计时,此时修改:

M0P_LPTIMER0->CR_f.TR = 0;
                for(timeout = 1000; (timeout > 0) && !M0P_LPTIMER0->CR_f.WT_FLAG; timeout--);
                M0P_LPTIMER0->ARR_f.ARR = preload;
                M0P_LPTIMER0->CR_f.TR = 1;
按照HC32L136的资料,preload必须小于0xfffb.  当我计时6个时钟的时候,preload = 0xfffa, 中断正常。但是测量输出波形,发现实际是9个时钟,额外多了3个时钟。  进一步测试: 输出一组方波, 高脉宽20个脉冲,低脉宽8个时钟。测试输出波形,高脉宽为23个时钟, 低脉宽为11个时钟。
  
  请问, 低功耗定时器 从写入ARR到装载成功,内部花费了3个时钟周期?

使用特权

评论回复
沙发
wubangmi| | 2024-11-20 16:04 | 只看该作者
资料上说LPTIM用的是非PCLK时钟时,此时LPTIM是异步时钟。也就是说并不能一个PCLK就能把ARR值写入,而是需要一个LPTIM的异步时钟才能确保写入。假如此时PCLK是4M的话,而异步时钟此时是32.768K,按照理论来说需要10多个PCLK时钟周期才能正确写入,而你实测需要3个CLK就写完了,这也算是比较正常了。

建议LPTIM用PCLK看看,需要几个PCLK时钟周期能正常写入。理论上应该一个CLK就能正常写入了。

使用特权

评论回复
板凳
Sam131208|  楼主 | 2024-11-20 16:33 | 只看该作者
wubangmi 发表于 2024-11-20 16:04
资料上说LPTIM用的是非PCLK时钟时,此时LPTIM是异步时钟。也就是说并不能一个PCLK就能把ARR值写入,而是需 ...

    你好,以上指的均是XTL低频时钟(1000000/32768us). 如果是PCLK时钟的话,就没有必要提出来了。大概也很难测试到定时器有延迟。

使用特权

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

本版积分规则

30

主题

95

帖子

0

粉丝