
芯片用的是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); //tamper脚输出秒脉冲实现不了,当把 //BKP_RTCOutputSource_Second改为BKP_RTCOutputSource_CalibClock时可正常输出校正脉冲, //请问如何才能输出秒脉冲,谢谢! } 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(); } |