stm32在SRAM中调试部分中断不响应的问题stm32在SRAM中调试部分中断不响应的问题.doc

stm32在SRAM中调试部分中断不响应的问题stm32在SRAM中调试部分中断不响应的问题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32在SRAM中调试部分中断不响应的问题stm32在SRAM中调试部分中断不响应的问题

stm32在SRAM中调试部分中断不响应的问题 ? ?因为stm32在flash区擦写的次数有限,所以我选择在sram中调试,SRAM擦除次数无限次,不过掉电代码就消失。代码放在SRAM中,对于我们调试是非常有帮助的。(我用的是原子的开发板) ????最近这几天发现,在SRAM中调试,部分中断不响应的问题,比如RTC秒中断,明明使能了秒中断,可是总是卡在某个地方不动,然后怎么也进入不了中断。下面是我的代码。结合代码说明问题吧。 ? rtc.h文件中代码 ? #ifndef __RTC_H #define __RTC_H typedef struct { ?u8 m; ?u8 h; ?u8 s; }calendar; extern calendar rl; extern u8 tim_bz; u8 RTC_Init(void); #endif rtc.c文件中代码 #include sys.h #include delay.h #include rtc.h u8 tim_bz=0; calendar rl; u8 RTC_Init(void) { ?u8 temp = 0; ?if(BKP-DR1 != 0X5050)//检测是不是第一次配置,后面会有向BKP-DR1写数据的语句 ?{ ??//1,使能电源时钟和备份区域时钟 ??RCC-APB1ENR |= 128;//电源接口时钟使能 ??RCC-APB1ENR |= 127;//备份接口时钟使能 ??//2,取消备份区域写保护,需要向备份区域写 ??//一个字节来标记时钟已经配置过了,避免每次复位启动 ??PWR-CR |= 18;//取消后备区域的写保护 ?? ??//3,复位备份区域,开启外部低速振荡器 ??RCC-BDCR |= 116;//备份域软件复位 ??RCC-BDCR = ~(116);//备份域软件复位清,因为备份域软件复位要由软件清除,且不能一直复位。? ??RCC-BDCR |= 10;//外部低速时钟使能 ??while((!(RCC-BDCR0X02))temp250)//判断rtc外部低速振荡器是否就绪 ??{ ???temp++; ???delay_ms(10); ??} ??if(temp=250)return 1;//初始化失败,外部晶振有问题 ??//4,选择RTC时钟源并使能 ??RCC-BDCR |= 18;//LSE振荡器作为rtc时钟 ??RCC-BDCR |= 115;//RTC时钟使能 ??while(!(RTC-CRL(15)));//等待rtc写操作完成 ??while(!(RTC-CRL(13)));//等待RTC寄存器和APB1接口同步 ??RTC-CRH |= 0x01;//允许秒中断 ??while(!(RTC-CRL(15)));//等待rtc写操作完成 ??RTC-CRL |= 14;//允许配置RTC寄存器 ??RTC-PRLH = 0x0000; ??RTC-PRLL |=32767;//设置RTC时钟频率为1hz ??RTC-CNTL = 0x0005; ??RTC-CNTH = 0X0000; ??RTC-CRL = ~(14);//配置更新 ??while(!(RTC-CRL(15)));//等待rtc写操作完成 ??RTC-CRL = ~(15);//rtc操作关闭 ??BKP-DR1 = 0X5050; ?} ?else ?{ ??while(!(RTC-CRL(13)));//等待RTC寄存器和APB1接口同步 ??RTC-CRH |= 0x01;//允许秒中断 ??while(!(RTC-CRL(15)));//等待rtc写操作完成?? ?} ?MY_NVIC_Init(0,0,RTC_IRQn,2);//设置中断 ?return 0; } void RTC_IRQHandler(void) { ?if(RTC-CRL0X01) ?{ ??tim_bz = 1;//进入中断标志,等下判断是否发生中断 ??RTC-CRL = ~(10);//清除秒标志 ??while(!(RTC-CRL(15)));//等待rtc写操作完成??? ?} } ? ? 主函数代码 #include sys.h #include usart.h?? #include delay.h? #include led.h #include beep.h??? #include key.h??? #include exti.h??? #include wdg.h ? #include timer.h???? #include tpad.h???? #include lcd.h #include rtc.h???? int

您可能关注的文档

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档