OpenEdv-开源电子网

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

原子哥 在添加与硬件操作无关的代码 发生HardFaultException的显现怎么回事

[复制链接]

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
发表于 2013-4-17 10:44:18 | 显示全部楼层 |阅读模式
 原子哥,现在在编写代码的时候,     比如添加 Case11的时候,代码就跑不动了,会自动的进入到HardFaultException的形式,之后这几个类型的数据是在一起定义的。全局的变量,一般而言出现这样的情况。现在是定义这些数据没问题,但是对这个数据进行操作就有问题了。
现在可以写case 12
不过一旦写上了case 11就死机。
ps:还经常遇到定义了某一个数,然后系统就跑不动的情况。用的ucosii~不知道为什么 请指点一下
 case 12:     
          switch (Get_Key){
          case 0:
          case 1:
          case 2:
          case 3:
          case 4:
          case 5:
          case 6:
          case 7:
          case 8:
          case 9:
             RTC_Flag=1;
             Main_Monitor_RFault1 = Main_Monitor_RFault1*10 + Get_Key;
             Main_Monitor_RFault1 = Main_Monitor_RFault1%100;   //只保留四位数
          
                       
             sprintf(NumPad_buf, "%2d", Main_Monitor_RFault1); 
             LISTVIEW_SetItemTextColor(hItem,1,row,LISTVIEW_CI_UNSEL,GUI_RED );
             LISTVIEW_SetItemText(hItem, 1, row,NumPad_buf);             
             break;
          case 10:
             RTC_Flag=1;
             Main_Monitor_RFault1 = Main_Monitor_RFault1/10;
             sprintf(NumPad_buf, "%2d", Main_Monitor_RFault1); 
             LISTVIEW_SetItemTextColor(hItem,1,row,LISTVIEW_CI_UNSEL,GUI_RED );
             LISTVIEW_SetItemText(hItem, 1, row,NumPad_buf); 
             break; 
          default:
             break;
          }
          break;           
      case 11:     
          switch (Get_Key){
          case 0:
          case 1:
          case 2:
          case 3:
          case 4:
          case 5:
          case 6:
          case 7:
          case 8:
          case 9:
             RTC_Flag=1;
             Main_Monitor_RNormal = Main_Monitor_RNormal*10 + Get_Key;
             Main_Monitor_RNormal = Main_Monitor_RNormal%100;   //只保留四位数
          
                       
             sprintf(NumPad_buf, "%2d", Main_Monitor_RNormal); 
             LISTVIEW_SetItemTextColor(hItem,1,row,LISTVIEW_CI_UNSEL,GUI_RED );
             LISTVIEW_SetItemText(hItem, 1, row,NumPad_buf);             
             break;
          case 10:
             RTC_Flag=1;
             Main_Monitor_RNormal = Main_Monitor_RNormal/10;
             sprintf(NumPad_buf, "%2d", Main_Monitor_RNormal); 
             LISTVIEW_SetItemTextColor(hItem,1,row,LISTVIEW_CI_UNSEL,GUI_RED );
             LISTVIEW_SetItemText(hItem, 1, row,NumPad_buf); 
             break; 
          default:
             break;
          }
          break;  
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
 楼主| 发表于 2013-4-17 11:21:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

38

主题

527

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1424
金钱
1424
注册时间
2011-11-27
在线时间
122 小时
发表于 2013-4-17 13:44:09 | 显示全部楼层
非法访问问题,可能是数组溢出
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-17 14:10:26 | 显示全部楼层
回复【楼主位】shaotianyu12:
---------------------------------
检查堆栈数组什么的,一般这种就是内存非法访问.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
 楼主| 发表于 2013-4-17 15:06:17 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥 有没有内存非法访问修改的例子
或者说是如何正确的进行访问的例子呢?!就是那种规则
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-17 15:10:26 | 显示全部楼层
比如你定义个指针u8*p;
然后没分配内存,就去操作:p[2]=1;
这样很可能就会引起硬件错误.
还有你的p可能分配了10个字节,但是你写了个p[15]=1;
也可能导致硬件错误.
类似的,自己分析.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 05:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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