定义数组后出现错误 HardFault_Handler
来源:互联网 发布:电脑windows文件损坏 编辑:程序博客网 时间:2024/09/21 09:25
最近学习stm32.
在原子的串口程序前加了几个数组定义,加了个对数组处理的函数,出现了HardFault_Handler的错误,不知道怎么解决!!!代码如下
void calDist(float dist[8][8],float real[8],float test[8]){ for(i=0; i<8;i++){for(j=0; j<8;j++){ dist[i][j]=(test[i]-real[j])*(test[i]-real[j]); printf("dist[%d][%d]=%d",i,j,dist[i][j]);}printf("\r\n");}} float calMinDis(float dist[8][8],float route[8][8]){ for(i=0; i<8;i++){for(j=0; j<8;j++){ if(i+j==0) { route[i][j]=dist[i][j]; continue;}if(i==0){ route[i][j]=dist[i][j]+route[i][j-1]; continue;}if(j==0){ route[i][j]=dist[i][j]+route[i-1][j]; continue;} route[i][j]=route[i-1][j-1]; if(route[i][j]>route[i][j-1]) route[i][j]=route[i][j-1]; if(route[i][j]>route[i-1][j]) route[i][j]=route[i-1][j]; route[i][j]+=dist[i][j];}} return route[8-1][8-1];} int main(void){ float real[8]={1,2,3,4,5,6,7,8};float test[8]={11,12,13,14,15,16,17,18};float dist[8][8]; float minDis,route[8][8]; Stm32_Clock_Init(9); //系统时钟设置 !!!!!!错误产生的地方!!!!!!!!!!! delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化为9600LED_Init(); //初始化与LED连接的硬件接口 while(1){printf("begin calDist ");calDist(dist,real,test);printf("begin minDisminDis"); minDis=calMinDis(dist,route); ////若是将这个函数注释,则可以解决上述问题!!!!!!!!!!!!! //printf("minDis=%d",minDis); }}
后来在原子论坛得到解决。
因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出。
在库文件里 Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中修改启动代码,
Stack_Size EQU 0x00000800
对 stack size 进行设定太小。
栈不能开的太大,除了变量需要,调用的函数参数也需要压栈。
0 0
- 定义数组后出现错误 HardFault_Handler
- STM32出现HardFault_Handler故障
- 函数内定义大数组出现段错误
- STM32 出现 hardfault_handler 处理方法
- STM32F407 定时器TIM3 出现 HardFault_Handler
- stm32F4系列出现HardFault_Handler解决方法
- STM32 HardFault_Handler错误定位方法
- HardFault_Handler
- 链接出现多重定义错误
- STM32出现HardFault_Handler问题查找方法
- STM32发生HardFault_Handler错误的查找方法
- 关于STM32处理器的HardFault_Handler错误原因
- 亲自解决STM32 HardFault_Handler错误记录
- STM32硬件错误HardFault_Handler的处理方法
- .h头文件出现重定义错误
- 程序中定义了大数组或需要很大栈内存时,出现stack overflow 错误的解决方法(vs2008)
- C++命名空间里面定义变量出现重定义错误
- 在串口数据轰炸后,程序HardFault_Handler()了
- 配置数据源
- 一步步学习微软InfoPath2010和SP2010--第六章节--发布并提交表单数据(3)--提交到SharePoint
- 控制taskmgr CPU记录曲线
- Recovery from Fault(故障恢复策略)
- 移动web前端小结
- 定义数组后出现错误 HardFault_Handler
- spring data jpa初试
- 用JavaScript随机修改页面的标题
- job, process, process group, and session
- PHP如何添加自带的扩展库
- 关于asp.net网站session失效的问题
- 第2周:计算圆的面积
- 面试-事务属性小结和事务的隔离级别
- 使用 Eclipse 平台进行调试