完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片用的是STM32F103VBT6,目前程序已经可以在tamper(PC13)引脚上输出校正时钟,其时钟频率为RTC时钟除以64。但调了好几天都无法输出秒脉冲,求大神搭救。
/****************************************************************/ #include quot;stm32f10x.h quot; 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(); } |
|
相关推荐
1个回答
|
|
首先,我们需要确保STM32F103VBT6的RTC配置正确。以下是一些关键步骤和可能的问题:
1. 确保时钟已经正确配置。RTC时钟需要从LSI或LSE时钟源获取。 2. 初始化RTC。在`RTC_Configuration()`函数中,确保已经正确设置了RTC的时钟源、预分频器和分频器。 3. 配置Tamper(PC13)引脚。确保PC13引脚已经被配置为Tamper模式。 4. 使能Tamper中断。在`RTC_Configuration()`函数中,确保已经使能了Tamper中断。 5. 配置NVIC。确保已经使能了RTC中断。 6. 在主循环中,使用`BKP_TamperPinCmd(ENABLE);`启用Tamper引脚。 7. 实现Tamper中断处理函数。在`void RTC_Tamper_IRQHandler(void)`中,处理Tamper中断。 以下是修改后的代码示例: ```c #include "stm32f10x.h" void RTC_Configuration(void); void RTC_Tamper_IRQHandler(void); int main(void) { RTC_Configuration(); PWR_BackupAccessCmd(ENABLE); // 使能或失能RTC和后备寄存器访问 // 使能Tamper引脚 BKP_TamperPinCmd(ENABLE); // 使能NVIC中断 NVIC_EnableIRQ(RTC_Tamper_IRQn); while (1) { // 主循环 } } void RTC_Configuration(void) { // RTC时钟配置 RCC_LSICmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); RCC_RTCCLKCmd(ENABLE); // RTC初始化 RTC_InitTypeDef RTC_InitStructure; RTC_StructInit(&RTC_InitStructure); RTC_InitStructure.RTC_AsynchPrediv = 0x7F; RTC_InitStructure.RTC_SynchPrediv = 0xFF; RTC_Init(&RTC_InitStructure); // 使能Tamper中断 RTC_ITConfig(RTC_IT_TAMP1, ENABLE); } void RTC_Tamper_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_TAMP1) != RESET) { // 处理Tamper中断 RTC_ClearITPendingBit(RTC_IT_TAMP1); } } ``` 请确保您的`RTC_Configuration()`函数中的配置与您的硬件和需求相匹配。如果问题仍然存在,请检查您的硬件连接和引脚配置。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:57 , Processed in 0.792098 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号