OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4154|回复: 6

为什么进到死循环去了

[复制链接]

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-10-13
在线时间
18 小时
发表于 2014-12-11 21:12:10 | 显示全部楼层 |阅读模式
5金钱
我在做RTC闹钟时出现了这样的问题,还求指点一下。
u8 RTC_Init(void)
{
//?ì?é?????????????????±??
u8 temp=0;
 
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050) //?????¨???ó±??????÷??????????:?????????????????¨???????à??
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //????PWR??BKP???è?±??   
PWR_BackupAccessCmd(ENABLE); //?????ó±??????÷·??? 
BKP_DeInit(); //????±?·????ò
RCC_LSEConfig(RCC_LSE_ON); //?è???????????§??(LSE),???????è?????§??
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) //?ì?é???¨??RCC±ê?????è????·?,?????????§?????÷
{
temp++;
delay_ms(10);
}
if(temp>=250)return 1;//???????±???§°?,?§????????    
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //?è??RTC?±??(RTCCLK),????LSE×÷??RTC?±??    
RCC_RTCCLKCmd(ENABLE); //????RTC?±??  
RTC_WaitForLastTask(); //????×??ü??????RTC?????÷??????×÷?ê??
RTC_WaitForSynchro(); //????RTC?????÷????  
RTC_ITConfig(RTC_IT_SEC, ENABLE); //????RTC??????
RTC_ITConfig(RTC_IT_ALR, ENABLE);//??????????
RTC_WaitForLastTask(); //????×??ü??????RTC?????÷??????×÷?ê??
RTC_EnterConfigMode();/// ???í????
RTC_SetPrescaler(32767); //?è??RTC?¤·???????
RTC_WaitForLastTask(); //????×??ü??????RTC?????÷??????×÷?ê??
RTC_Set(2009,12,2,10,0,55);  //?è???±??
RTC_ExitConfigMode(); //????????????  
BKP_WriteBackupRegister(BKP_DR1, 0X5050); //?ò???¨???ó±??????÷?????????§???ò????
}
else//???????????±
{

RTC_WaitForSynchro(); //????×??ü??????RTC?????÷??????×÷?ê??
RTC_ITConfig(RTC_IT_SEC, ENABLE); //????RTC??????
RTC_ITConfig(RTC_IT_ALR, ENABLE);//??????????
RTC_WaitForLastTask(); //????×??ü??????RTC?????÷??????×÷?ê??
}
RTC_NVIC_Config();//RCT????·?×é?è??         
RTC_Get();//?ü???±??
return 0; //ok

}     

/////?????±???è??  
u8 RTC_Set_Alr(u8 hour,u8 min,u8 sec)
{
int hour_add;
int min_add;
int sec_add;
RTC_Get();
hour_add=hour-calendar.hour;
min_add=min-calendar.min;
sec_add=sec-calendar.sec;

printf("\r\ncalendar.hour=%d",calendar.hour);
printf("\r\ncalendar.min=%d",calendar.min);
printf("\r\ncalendar.sec=%d",calendar.sec);

printf("\r\nhour_add=%d",hour_add);
printf("\r\nmin_add=%d",min_add);
printf("\r\nsec_add=%d",sec_add);
printf("\r\n%d",RTC_GetCounter());
printf("\r\n%d",3600*hour_add+60*min_add+sec_add+RTC_GetCounter());

//  RTC_WaitForLastTask(); //????×??ü??????RTC?????÷??????×÷?ê??
// RTC_WaitForSynchro(); //????RTC?????÷????  
// RTC->CRL|=1<<4;  
RTC_SetAlarm(3600*hour_add+60*min_add+sec_add+RTC_GetCounter());
return 0;
}


在MAIN函数中设置了闹钟时间RTC_Set_Alr(20,35,10); /////?????±???è??
结果发现死在了加红的函数里



最佳答案

查看完整内容[请看2#楼]

跟踪进去该函数分析问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-11 21:12:11 | 显示全部楼层
跟踪进去该函数分析问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-11 22:52:24 | 显示全部楼层
RTC_SetAlarm这个函数,根本看不到!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-11 23:21:25 | 显示全部楼层
回复【3楼】xuande:
---------------------------------
不会吧,库函数都有源码的啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-10-13
在线时间
18 小时
 楼主| 发表于 2014-12-12 08:28:12 | 显示全部楼层
我不知道是不是我u8 RTC_Init(void)没有配置对
void RTC_SetAlarm(uint32_t AlarmValue)
{  
  RTC_EnterConfigMode();
  /* Set the ALARM MSB word */
  RTC->ALRH = AlarmValue >> 16;
  /* Set the ALARM LSB word */
  RTC->ALRL = (AlarmValue & RTC_LSB_MASK);
  RTC_ExitConfigMode();
}
我把加红的注释掉就能运行

void RTC_EnterConfigMode(void)
{
  /* Set the CNF flag to enter in the Configuration Mode */
  RTC->CRL |= RTC_CRL_CNF;
}

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-12 12:29:23 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我是说LZ没有贴出来,我自己要去找。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-12 22:27:17 | 显示全部楼层
回复【5楼】wp153453278:
---------------------------------
参考下我们的代码吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 03:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表