6700|24

1234

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

程序能循环,过一会就卡死了 [复制链接]

程序烧写成功能循环,运行一会儿就卡死了,用J-link调试就会卡到hardfault hander(),查了LR=0xfffffff9,根据网上的人说查MSP,MSP=0x20000738,之后该怎么解决呢?求助!!!!!!!

QQ图片20150602163225.png (12.06 KB, 下载次数: 0)

MSP 地址

MSP 地址
此帖出自stm32/stm8论坛

最新回复

你的是什么原因呢?  详情 回复 发表于 2017-10-19 11:09
点赞 关注
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 

回复
举报

1234

帖子

4

TA的资源

纯净的硅(高级)

沙发
 
好几个程序都是循环了,然后突然就卡死了
此帖出自stm32/stm8论坛
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

板凳
 
看汇编代码,找到0x20000738地址的语句,不是看memery
此帖出自stm32/stm8论坛
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

4
 
movs ro,ro然后呢,怎么办
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

5
 
说错了,是0000 movs r0,r0
此帖出自stm32/stm8论坛

点评

对应那一段C程序,就重点检查那里,或前后设断点看具体是那一句出现的。一般是内存访问越界溢出之类的  详情 回复 发表于 2015-6-2 16:47
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

6
 
shower.xu 发表于 2015-6-2 16:36
看汇编代码,找到0x20000738地址的语句,不是看memery

是 0000 MOVS r0,r0  将r0传送给r0,之后怎么办?
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

7
 
ywlzh 发表于 2015-6-2 16:40
说错了,是0000 movs r0,r0

对应那一段C程序,就重点检查那里,或前后设断点看具体是那一句出现的。一般是内存访问越界溢出之类的
此帖出自stm32/stm8论坛
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

8
 
shower.xu 发表于 2015-6-2 16:47
对应那一段C程序,就重点检查那里,或前后设断点看具体是那一句出现的。一般是内存访问越界溢出之类的

原先的地址是停在了整个程序的最后一个“}”前,按你的方法在前前个语句“cha++;”前设了断点,汇编对应的是
0x08000440 4806 LDR r0,[pc,#24];@0x0800045C,以前学汇编没碰到过LDR,不知道是怎么会事,整个语句也不知道是什么意思,怎么办啊
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

9
 
1、单单汇编这句话应该是把@0x0800045C立即数放入PC,也就是跳转到这个地址的意思。--我猜的
2、你在前设断点直到能正常执行到断点处位置,之后的语句就应该是发生错误的地方。

此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

10
 
查看0x20000738的时候你的程序执行到哪一步了,这个地方有没有少什么分号呀,什么的。可能还是程序方面需要优化一下。
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

11
 
估计是内存泄漏,检查一下
此帖出自stm32/stm8论坛
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

12
 
huaiqiao 发表于 2015-6-2 22:21
查看0x20000738的时候你的程序执行到哪一步了,这个地方有没有少什么分号呀,什么的。可能还是程序方面需要优化一下。

少分号之类的,应该在编译时就会出错了啊,不是这个原因吧
此帖出自stm32/stm8论坛

点评

有些分号,编译器不会报错哦,我给举个例子:while(1) 和 while(1);不一定的哦,这个你仔细检查下还是好的。  详情 回复 发表于 2015-6-4 09:22
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

13
 
hjh2008303 发表于 2015-6-3 10:20
估计是内存泄漏,检查一下

内存泄露是什么情况?不懂
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

14
 
ywlzh 发表于 2015-6-4 09:18
少分号之类的,应该在编译时就会出错了啊,不是这个原因吧

有些分号,编译器不会报错哦,我给举个例子:while(1)  和   while(1);不一定的哦,这个你仔细检查下还是好的。
此帖出自stm32/stm8论坛
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

15
 
huaiqiao 发表于 2015-6-4 09:22
有些分号,编译器不会报错哦,我给举个例子:while(1)  和   while(1);不一定的哦,这个你仔细检查下还是好的。

程序能循环,只是突然卡住不动了,应该不是这一类问题
此帖出自stm32/stm8论坛

点评

恩恩,那就再检查下你的语句了  详情 回复 发表于 2015-6-4 20:15
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

16
 
ywlzh 发表于 2015-6-4 09:19
内存泄露是什么情况?不懂

比如动态分配的内存不回收,等导致的。也有可能是数组越界
此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

17
 
ywlzh 发表于 2015-6-4 18:00
程序能循环,只是突然卡住不动了,应该不是这一类问题

恩恩,那就再检查下你的语句了
此帖出自stm32/stm8论坛

赞赏

1

查看全部赞赏

 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

18
 
hjh2008303 发表于 2015-6-4 19:49
比如动态分配的内存不回收,等导致的。也有可能是数组越界

要是出现这种问题,改怎么解决?哎,我被这问题折磨了好几天,身边又没个人帮下,哎!
此帖出自stm32/stm8论坛

点评

贴代码和工程吧,你的环境别人猜不出来。  详情 回复 发表于 2015-6-5 14:06
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

19
 
ywlzh 发表于 2015-6-5 07:48
要是出现这种问题,改怎么解决?哎,我被这问题折磨了好几天,身边又没个人帮下,哎!

贴代码和工程吧,你的环境别人猜不出来,得靠你自己详细描述。
此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

20
 
freebsder 发表于 2015-6-5 14:06
贴代码和工程吧,你的环境别人猜不出来,得靠你自己详细描述。

代码如下,输出三路PWM控制RBG三灯,定时中断转换颜色。
#include "stm32f10x.h"
u8 num=0,cha=0;
void RCC_Confguration()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
                                RCC_APB2Periph_GPIOB|
                                RCC_APB2Periph_AFIO ,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|
                                RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4,ENABLE);
}
void GPIO_Confguration()
{
         GPIO_InitTypeDef GPIO_InitStructure;

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_0;                                 
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                                 
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_9;                                 
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
}
        void Timer_Confguration(u16 shu,u16 fenpin )
{
          TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   
    TIM_DeInit(TIM2);                             
    TIM_DeInit(TIM3);

    TIM_TimeBaseStructure.TIM_Period = shu;        
    TIM_TimeBaseStructure.TIM_Prescaler = fenpin;   
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
          TIM_TimeBaseStructure.TIM_Period = shu;      
    TIM_TimeBaseStructure.TIM_Prescaler = fenpin;   
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
       
          TIM_DeInit(TIM4);                              
   
   
    TIM_TimeBaseStructure.TIM_Period = 50000;        
    TIM_TimeBaseStructure.TIM_Prescaler = 71;   
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

   
    TIM_ClearFlag(TIM4, TIM_FLAG_Update);

   
    TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);

   
    TIM_Cmd(TIM4, ENABLE);
        }

void PWM_Confguration()
{      
             TIM_OCInitTypeDef TIM_OCInitStructure;
       
       TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;     
             TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
             TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
             TIM_OC3Init(TIM3, &TIM_OCInitStructure);     
             
             TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;     
              TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
       TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
             TIM_OC4Init(TIM3, &TIM_OCInitStructure);     
       
       TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;     
              TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
       TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
             TIM_OC2Init(TIM2, &TIM_OCInitStructure);
       
             TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);   
       TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
             TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);
       
              TIM_Cmd(TIM2, ENABLE);
              TIM_Cmd(TIM3, ENABLE);
                        }

int main()
{
          NVIC_InitTypeDef  NVIC_InitStructure;
          SystemInit();
          RCC_Confguration();
          GPIO_Confguration();
          Timer_Confguration(2000,0);
          PWM_Confguration();
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
          NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
       
         while(1)
         {
                 if(cha==1){
             TIM2->CCR2 = 1000;
             TIM3->CCR3 = 2000;
             TIM3->CCR4 = 2000;
                         }
                         if(cha==2){
                         TIM2->CCR2 = 2000;
             TIM3->CCR3 = 1000;
             TIM3->CCR4 = 2000;
                         }
                         if(cha==3){
                         TIM2->CCR2 = 2000;
             TIM3->CCR3 = 2000;
             TIM3->CCR4 = 1000;
                         }
                         if(cha==4){
                         TIM2->CCR2 = 2000;
             TIM3->CCR3 = 1000;
             TIM3->CCR4 = 1000;
                         }
                         if(cha==5){
                         TIM2->CCR2 = 1000;
             TIM3->CCR3 = 2000;
             TIM3->CCR4 = 1000;
                         }
                         if(cha==6){
                         TIM2->CCR2 = 1000;
             TIM3->CCR3 = 1000;
             TIM3->CCR4 = 2000;
                         }
                         if(cha==7){
                         TIM2->CCR2 = 1000;
             TIM3->CCR3 = 1000;
             TIM3->CCR4 = 1000;
                         }
                 }
         }         
         


void TIM4_IRQHandler(void)
{
         if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)
         {   
                  
                  TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
      num++;                 
                 if(20==num)
                         {
                         num=0;
                         cha++;
                         if(8==cha)   
                                  cha=1;
                 }
                 
         }
         TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
}












此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表