微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32利用RTC在tamper引脚上输出秒脉冲

stm32利用RTC在tamper引脚上输出秒脉冲

时间:10-02 整理:3721RD 点击:
芯片用的是STM32F103VBT6,目前程序已经可以在tamper(PC13)引脚上输出校正时钟,其时钟频率为RTC时钟除以64。但调了好几天都无法输出秒脉冲,求大神搭救。

  1. /****************************************************************/
  2. #include "stm32f10x.h"
  3. void RTC_Configuration(void);
  4. int main(void)
  5. {

  6.    RTC_Configuration();
  7.    PWR_BackupAccessCmd(ENABLE);   //使能或失能RTC和后备寄存器访问
  8.    BKP_TamperPinCmd(DISABLE); //该函数使能或失能管脚的侵入检测功能  
  9.    BKP_RTCOutputConfig(BKP_RTCOutputSource_Second); /<font color="#0000ff">/tamper脚输出秒脉冲实现不了,当把           //BKP_RTCOutputSource_Second改为BKP_RTCOutputSource_CalibClock时可正常输出校正脉冲,</font>
  10. <font color="#ff0000">   //请问如何才能输出秒脉冲,谢谢!</font>
  11. }

  12. void RTC_Configuration(void)
  13. {
  14.   //启用PWR和BKP的时钟(from APB1)
  15.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  16.   PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问
  17.   BKP_DeInit();    //将BKP的全部寄存器重设为缺省值
  18.   RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE)32.768K  
  19.   while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  20.   {}
  21.   RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  //RTC时钟源配置成LSE(外部32.768K)
  22.   RCC_RTCCLKCmd(ENABLE);//RTC开启
  23.   RTC_WaitForSynchro();  //开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器
  24.   RTC_WaitForLastTask();
  25.   RTC_EnterConfigMode();
  26.   RTC_WaitForLastTask();
  27.   RTC_SetPrescaler(32767);
  28.   RTC_WaitForLastTask();
  29.   RTC_SetCounter(0);
  30.   RTC_WaitForLastTask();
  31.   RTC_ExitConfigMode();
  32.   RTC_WaitForLastTask();
  33. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top