问题:STM32进入停止模式,但不时会来个外部脉冲唤醒,两次外部脉冲的时间间隔不定, 100ms~900ms之间,我现在想要获得两个脉冲之间的具体间隔时间,但因为STM32进入停止模式,所以没办法计时。
现在有个思路:利用RTC的脉冲计数器来计。因为我RTC已经用来做秒表功能了。所以,把秒中断改为毫秒中断的方式不行了。请问,RTC有没有那个计算32.768晶振产生的脉冲计数器啊(即累计32768次产生一次秒中断的那个),计数器的地址值是多少,我想如果有的话,那我只要读寄存器的值,那不就可以得到2个外部脉冲的时间差了。请问,有那寄存器吗?地址多少?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
回复【3楼】正点原子:
---------------------------------
谢谢,我找到了,
在RTC->CNTH(秒)RTC->DIVH(每32768为1秒,3276将近100ms。我只要100ms的精度)
uStep_Count_No_Time=RTC->CNTH;//得到计数器中的值(秒钟数)
uStep_Count_No_Time<<=16;
uStep_Count_No_Time+=RTC->CNTL;
uStep_Count_No_Time_Cos=RTC->DIVH;//得到计数器中的值(32.768晶振产生的脉冲个数计数器的值。每次装载32768,递减,如果减到0,就会产生秒中断。)
uStep_Count_No_Time_Cos<<=16;
uStep_Count_No_Time_Cos+=RTC->DIVL;
一周热门 更多>