此帖出自stm32/stm8论坛
最新回复
/******************************************************************************** Function Name : RTC_GetCounter2* Description : Get RTC Counter 2 times,must equ* Input : None* Output : u32 Counter Value* Return : None*******************************************************************************/u32 RTC_GetCounter2(void){ u16 tmp,tmp1; tmp1 = RTC->CNTH; tmp = RTC->CNTL; if(tmp1 != RTC->CNTH) { tmp1++;//RTC->CNTH只可能递增1,除非本子程序执行时间长于65535秒 tmp = RTC->CNTL;//tmp = 0;如果保证本子程序执行时间短于1秒,可直接置为0 } return (((u32)tmp1 << 16 ) | tmp) ;}优点:1、去掉循环2、一般只读3次IO(65536秒才多读1次)。3、无side effect。
详情
回复
发表于 2008-6-19 12:01
| ||
|
||
| |
|
|
献上洋人贡献的代码供参考
此帖出自stm32/stm8论坛
| ||
|
||
这样行不行:
此帖出自stm32/stm8论坛
| ||
|
||
4楼的程序也可以,但可能3楼的程序效率高些
此帖出自stm32/stm8论坛
| ||
|
||
3楼的程序可能导致中断丢失呢。。。。。。
此帖出自stm32/stm8论坛
| ||
|
||
不会丢失中断呀
此帖出自stm32/stm8论坛
| ||
|
||
软件刚好清除了RTC_FLAG_SEC,还会中断吗?
此帖出自stm32/stm8论坛
| ||
|
||
定稿版本:
此帖出自stm32/stm8论坛
| ||
|
||
EEWorld Datasheet 技术支持