初级会员

- 积分
- 87
- 金钱
- 87
- 注册时间
- 2017-2-19
- 在线时间
- 17 小时
|
1金钱
开发板:STM32F103ZET6芯片,最小系统,带32K和8M晶振
想利用RTC的PC13端口输出秒脉冲,程序如下:
void rtc_init()
{
//使能时钟
RCC->APB1ENR|=RCC_APB1ENR_PWREN+RCC_APB1ENR_BKPEN;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
while((RTC->CRL&RTC_CRL_RSF)==0);
PWR->CR|=PWR_CR_DBP;
//备份区域复位
RCC->BDCR=RCC_BDCR_BDRST;
RCC->BDCR&=~RCC_BDCR_BDRST;
//时钟选择与使能设置
//使能LSE时钟
RCC->BDCR=RCC_BDCR_LSEON;
//等待32K时钟就绪
while((RCC->BDCR&RCC_BDCR_LSERDY)==0);
//设置时钟源并使能时钟
RCC->BDCR|=RCC_BDCR_RTCSEL_LSE;
RCC->BDCR|=RCC_BDCR_RTCEN;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
while((RTC->CRL&RTC_CRL_RSF)==0);
RTC->CRL=RTC_CRL_CNF;
RTC->PRLH=0;
RTC->PRLL=32767;
BKP->CR=0;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
while((RTC->CRL&RTC_CRL_RSF)==0);
BKP->RTCCR=BKP_RTCCR_ASOE+BKP_RTCCR_ASOS;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
while((RTC->CRL&RTC_CRL_RSF)==0);
RTC->CRH=RTC_CRH_SECIE;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
while((RTC->CRL&RTC_CRL_RSF)==0);
RTC->CRL&=~RTC_CRL_CNF;
while((RTC->CRL&RTC_CRL_RTOFF)==0);
}
利用仿真器在线仿真,发现RTC->PRLL=32767;运行后,PRLL寄存器值无变化;
秒脉冲也没有输出,请各位大神帮忙给解决一下。谢谢。
|
最佳答案
查看完整内容[请看2#楼]
已解决,通过将信号引出到单独的LED上发现,输出并不是50%占空比的方波,而是每秒来一个时间很短的脉冲,能量较小,导致看不出来,绝对的秒”脉冲“……
|