
STM32F0 使用 RTC Tamper 的几个注意事
项
问题:
该问题由某客户提出,发生在
STM32F072
器件上。据其软件工程师讲述:使用
STM32F0
系列的标准外
设库中
RTC_Tamper 的例程来进行修改,例程中配置的是当在 RTC_TAMP1 引脚检测到上升沿的时候,复 位备份寄存器并产生中
断;客户根据其实际应用将配置中的上升沿改成下降沿,以期待在检测到下降 沿的时候,复位备份寄存器并产生中断。结果,
客户发现经常是只要一开始跑程序,会产生中断,复 位备份寄存器。使用示波器观察 RTC_TAMP1 引脚,并没有发现下降
沿波形。客户百思不得其解。
调研:
问题(一)
首先,我们检测一下 STM32F0xx 标准外设库中 RTC_Tamper 例程的 Readme.txt,我们发现其中描述 此程序的功能为将
Tamper 引脚配置成下降沿并使能中断,当给 RTC_AF1(RTC_TAMPER1/PC13)施 加低电平时,RTC 备份数据寄存器将被
复位,并产生 Tamper 中断。不过我们再看一下例程,发现在 例程中配置其实是上升沿的中断,也就是说,此 Readme.txt
与程序不符。所以,我们先不管 Readme.txt 所描述的内容。
我们来看一下客户的程序,发现客户只是在例程中修改了两个配置的语句。修改如下:
(1) 例程:
/* Enable The external line19 interrupt */
EXTI_ClearITPendingBit(EXTI_Line19);
EXTI_InitStructure.EXTI_Line = EXTI_Line19;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger =
EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
客户程序修改为:
/* Enable The external line19 interrupt */
EXTI_ClearITPendingBit(EXTI_Line19);
EXTI_InitStructure.EXTI_Line = EXTI_Line19;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
(2)
例程:
/* Configure the Tamper 1 Trigger */