STM32F407 RTC 无法进行断点调试问题请教

2019-07-20 07:32发布

硬件环境:STM32F407ZE(使用金点原子例程RTC工作正常)
软件环境:KEIL5
RTC配置如下:
static void RTC_Config(void)
{
  /* Enable the PWR clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

  /* Allow access to RTC */
  PWR_BackupAccessCmd(ENABLE);

  /* Reset RTC Domain */
  //RCC_BackupResetCmd(ENABLE);
  //RCC_BackupResetCmd(DISABLE);

  /* Enable the LSE OSC */
  RCC_LSEConfig(RCC_LSE_ON);

  /* Wait till LSE is ready */  
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }

  /* Select the RTC Clock Source */
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

  /* Configure the RTC data register and RTC prescaler */
  /* ck_spre(1Hz) = RTCCLK(LSI) /(AsynchPrediv + 1)*(SynchPrediv + 1)*/
  RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
  RTC_InitStructure.RTC_SynchPrediv  = 0xFF;
  RTC_InitStructure.RTC_HourFormat   = RTC_HourFormat_24;
  RTC_Init(&RTC_InitStructure);

  /* Set the time to 00h 00mn 00s AM */
       
  RTC_TimeStruct.RTC_H12     = RTC_H12_AM;
  RTC_TimeStruct.RTC_Hours   = 0x11;
  RTC_TimeStruct.RTC_Minutes = 0x55;
  RTC_TimeStruct.RTC_Seconds = 0;  
  RTC_SetTime(RTC_Format_BCD, &RTC_TimeStruct);
       
        //RTC_GetTime(RTC_Format_BCD, &RTC_TimeStruct);       
}
问题如下:
1.png
388行  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_ON;断点调试为灰 {MOD},单步调试整个switch语句跳过;
查看汇编如下:
2.png
请教该问题原因?




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
remy911
1楼-- · 2019-07-20 08:33
问题解决,编译器设置问题,将优化等级由3级更改为0,如下图:
1.png 重新编译调试,查看汇编与C对应,如下:
2.png

RTC工作正常,但是不理解为何优化等级会出现这样情况,按理说优化不应该出现这样的情况!
正点原子
2楼-- · 2019-07-20 11:48
 精彩回答 2  元偷偷看……
remy911
3楼-- · 2019-07-20 17:28
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-20 20:49
remy911 发表于 2018-6-26 16:58
问题解决,编译器设置问题,将优化等级由3级更改为0,如下图:
重新编译调试,查看汇编与C对应,如下:

...

优化以后,调试效果很差!
remy911
5楼-- · 2019-07-20 22:09
正点原子 发表于 2018-6-27 02:05
优化以后,调试效果很差!

若是这样不敢轻易尝试优化,有些问题隐蔽了很难找了!

一周热门 更多>