本帖最后由 学习stm32f4 于 2018-3-4 20:11 编辑
大家好。
在学习RTC时,有3个疑点始终不明白:
1,视频里讲了三个RTC相关的约束函数,分别是:
[mw_shl_code=c,true]void RTC_WriteProtectionCmd(FunctionalState NewState);//取消写保护
ErrorStatus RTC_EnterInitMode(void);//进入配置模式,RTC_ISR_INITF位设置为1
void RTC_ExitInitMode(void)//退出初始化模式。
[/mw_shl_code]
查看第一个函数RTC_WriteProtectionCmd()的注释说明,有:
[mw_shl_code=c,true]Enables or disables the RTC registers write protection.
All the RTC registers are write protected except for RTC_ISR[13:8],RTC_TAFCR and RTC_BKPxR.[/mw_shl_code]
根据该函数说明,操作RTC寄存器需要取消写保护。但是原子哥的例程里,没有调用该函数,也没有操作写保护相关的寄存器。那么,不用取消写保护也能操作RTC寄存器吗?
第二个、第三个函数是进入初始化模式函数和退出初始化模式函数,例程里,也没有调用这两个函数,但是对RTC初始化时,不再进入初始化模式或退出初始化模式了吗?
2,在RTC例程rtc.c文件的RTC_Set_AlarmA()里,有两句:
[mw_shl_code=c,true]RTC_ClearITPendingBit(RTC_IT_ALRA);//清除RTC闹钟A的标志
EXTI_ClearITPendingBit(EXTI_Line17);//清除LINE17上的中断标志位 [/mw_shl_code]
根据外部中断线17的注释:External interrupt line 17 Connected to the RTC Alarm event
既然有了中断线17,为何还要额外使用RTC_ClearITPendingBit()函数呢?或者,RTC闹钟中断和外部中断线17是什么关系呢?
3,RTC唤醒中断函数RTC_Set_WakeUp()里有:
[mw_shl_code=c,true]RTC_ClearITPendingBit(RTC_IT_WUT); //清除RTC WAKE UP的标志
EXTI_ClearITPendingBit(EXTI_Line22);//清除LINE22上的中断标志位 [/mw_shl_code]
同问题2一样,RTC的唤醒中断与外部中断线22是什么关系呢?
以上三个问题是很疑惑的地方,有思考过它们的大神吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>