STM32
直播中

ytrwv

8年用户 920经验值
擅长:EMC/EMI设计
私信 关注
[问答]

STM32F103RC芯片的RTC的PRL寄存器的值无法显示的原因?

RTC_PRL寄存器的值为什么在Keil的调试中无法看到这个值的数值?一直显示是0,RCC_CNT的计数和中断都正常。
这是我的RTC的配置代码:
void RTC_Configuration(void){  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);  PWR_BackupAccessCmd(ENABLE);  BKP_DeInit();  RCC_LSEConfig(RCC_LSE_ON);  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  RCC_RTCCLKCmd(ENABLE);  RTC_WaitForSynchro();  RTC_WaitForLastTask();  RTC_SetPrescaler(32767);  RTC_WaitForLastTask();  RTC_ITConfig(RTC_IT_SEC,ENABLE);  RTC_WaitForLastTask();}NVIC的配置:
void NVIC_RTC_Configuration(void){  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  NVIC_Init( NVIC_InitStructure);}中断服务函数:
void RTC_IRQHandler(void){  if(RTC_GetITStatus(RTC_IT_SEC) != RESET)    {    RTC_ClearITPendingBit(RTC_IT_SEC);  }}


回帖(1)

大彭

2024-3-12 17:19:53
CConfig(RCC_RTCCLK_Div32);  // 设置RTC时钟预分频

  RTC_WaitForLastTask();  // 等待最近的对RTC寄存器的写操作完成

  RTC_WaitForSynchro();  // 等待RTC寄存器同步完成
  
  RTC_ITConfig(RTC_IT_SEC, ENABLE);  // 使能RTC相关的中断
  
  RTC_WaitForLastTask();  // 等待最近的对RTC寄存器的写操作完成
  
  RTC_EnterConfigMode();  // 进入RTC配置模式
  
  RTC_SetPrescaler(32767);  // 设置RTC时钟预分频寄存器(PRL),RTC的频率 = RTCCLK/(PRL+1)
  
  RTC_WaitForLastTask();  // 等待最近的对RTC寄存器的写操作完成
  
  RTC_ExitConfigMode();  // 退出RTC配置模式

  RTC_WaitForLastTask();  // 等待最近的对RTC寄存器的写操作完成

}

这是一个初始化RTC的代码示例,其中设置了RTC时钟的预分频寄存器(PRL),计算公式为RTC的频率 = RTCCLK / (PRL + 1)。如果在调试中无法显示PRL寄存器的值,通常是由于Keil的调试工具问题。可以尝试使用其他的调试工具,如J-Link等,来查看PRL寄存器的值。此外,还可以尝试在程序中添加打印语句来打印PRL寄存器的值,以便确认其正确性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分