stm32利用RTC在tamper引脚上输出秒脉冲
时间:10-02
整理:3721RD
点击:
芯片用的是STM32F103VBT6,目前程序已经可以在tamper(PC13)引脚上输出校正时钟,其时钟频率为RTC时钟除以64。但调了好几天都无法输出秒脉冲,求大神搭救。
- /****************************************************************/
- #include "stm32f10x.h"
- void RTC_Configuration(void);
- int main(void)
- {
- RTC_Configuration();
- PWR_BackupAccessCmd(ENABLE); //使能或失能RTC和后备寄存器访问
- BKP_TamperPinCmd(DISABLE); //该函数使能或失能管脚的侵入检测功能
- BKP_RTCOutputConfig(BKP_RTCOutputSource_Second); /<font color="#0000ff">/tamper脚输出秒脉冲实现不了,当把 //BKP_RTCOutputSource_Second改为BKP_RTCOutputSource_CalibClock时可正常输出校正脉冲,</font>
- <font color="#ff0000"> //请问如何才能输出秒脉冲,谢谢!</font>
- }
- void RTC_Configuration(void)
- {
- //启用PWR和BKP的时钟(from APB1)
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
- PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问
- BKP_DeInit(); //将BKP的全部寄存器重设为缺省值
- RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE)32.768K
- while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
- {}
- RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //RTC时钟源配置成LSE(外部32.768K)
- RCC_RTCCLKCmd(ENABLE);//RTC开启
- RTC_WaitForSynchro(); //开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器
- RTC_WaitForLastTask();
- RTC_EnterConfigMode();
- RTC_WaitForLastTask();
- RTC_SetPrescaler(32767);
- RTC_WaitForLastTask();
- RTC_SetCounter(0);
- RTC_WaitForLastTask();
- RTC_ExitConfigMode();
- RTC_WaitForLastTask();
- }