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

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

ID:62033925

大小:93.50 KB

页数:8页

时间:2021-04-15

stm32在SRAM中调试部分中断不响应的问题.doc_第1页
stm32在SRAM中调试部分中断不响应的问题.doc_第2页
stm32在SRAM中调试部分中断不响应的问题.doc_第3页
stm32在SRAM中调试部分中断不响应的问题.doc_第4页
stm32在SRAM中调试部分中断不响应的问题.doc_第5页
资源描述:

《stm32在SRAM中调试部分中断不响应的问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、stm32在SRAM中调试部分中断不响应的问题  因为stm32在flash区擦写的次数有限,所以我选择在sram中调试,SRAM擦除次数无限次,不过掉电代码就消失.代码放在SRAM中,对于我们调试是非常有帮助的.(我用的是原子的开发板)    最近这几天发现,在SRAM中调试,部分中断不响应的问题,比如RTC秒中断,明明使能了秒中断,可是总是卡在某个地方不动,然后怎么也进入不了中断。下面是我的代码.结合代码说明问题吧。 rtc.h文件中代码 #ifndef__RTC_H#define__RTC_Htypedefstruct{ u8m; u8h; u8s;}calen

2、dar;externcalendarrl;externu8tim_bz;u8RTC_Init(void);#endifrtc.c文件中代码#include”sys.h"#include"delay.h"#include"rtc。h”u8tim_bz=0;calendarrl;u8RTC_Init(void){ u8temp=0; if(BKP-〉DR1!=0X5050)//检测是不是第一次配置,后面会有向BKP->DR1写数据的语句 {  //1,使能电源时钟和备份区域时钟  RCC—>APB1ENR|=1〈〈28;//电源接口时钟使能  RCC->APB1ENR|=

3、1〈〈27;//备份接口时钟使能  //2,取消备份区域写保护,需要向备份区域写  //一个字节来标记时钟已经配置过了,避免每次复位启动  PWR-〉CR|=1<〈8;//取消后备区域的写保护    //3,复位备份区域,开启外部低速振荡器  RCC-〉BDCR|=1〈〈16;//备份域软件复位  RCC—〉BDCR&=~(1〈<16);//备份域软件复位清,因为备份域软件复位要由软件清除,且不能一直复位。   RCC—>BDCR

4、=1<<0;//外部低速时钟使能  while((!(RCC-〉BDCR&0X02))&&temp<250)//判断rtc外部低速振荡器是

5、否就绪  {   temp++;   delay_ms(10);  }  if(temp〉=250)return1;//初始化失败,外部晶振有问题  //4,选择RTC时钟源并使能  RCC->BDCR

6、=1<<8;//LSE振荡器作为rtc时钟  RCC->BDCR

7、=1〈<15;//RTC时钟使能  while(!(RTC-〉CRL&(1<〈5)));//等待rtc写操作完成  while(!(RTC-〉CRL&(1<<3)));//等待RTC寄存器和APB1接口同步  RTC-〉CRH|=0x01;//允许秒中断  while(!(RTC—〉CRL&(1<<5)

8、));//等待rtc写操作完成  RTC-〉CRL

9、=1<〈4;//允许配置RTC寄存器  RTC—>PRLH=0x0000;  RTC-〉PRLL

10、=32767;//设置RTC时钟频率为1hz  RTC—>CNTL=0x0005;  RTC—>CNTH=0X0000;  RTC->CRL&=~(1<〈4);//配置更新  while(!(RTC—>CRL&(1〈<5)));//等待rtc写操作完成  RTC—〉CRL&=~(1〈<5);//rtc操作关闭  BKP—>DR1=0X5050; } else {  while(!(RTC-〉CRL&(1〈<3)));//

11、等待RTC寄存器和APB1接口同步  RTC-〉CRH

12、=0x01;//允许秒中断  while(!(RTC—>CRL&(1〈<5)));//等待rtc写操作完成   } MY_NVIC_Init(0,0,RTC_IRQn,2);//设置中断 return0;}voidRTC_IRQHandler(void){ if(RTC—〉CRL&0X01) {  tim_bz=1;//进入中断标志,等下判断是否发生中断  RTC—〉CRL&=~(1<<0);//清除秒标志  while(!(RTC->CRL&(1〈〈5)));//等待rtc写操作完成    }}  主函数代码#

13、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"    intmain(void){  u32TimeData=0;              Stm32_Clock_Init(9); 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。