STM32 ------ HardFault_Hander 中断函数
1、数组越界(对数组赋值)
正常情况,数组越界会进入 HardFault_Hander 中断函数的无线循环。
避免数组越界的一个方法是:每次使用数组前,检查要放入数据的数据长度是否大于数组长度,大于则进入while(1),方便定位,如果可以打印信息更好。
2、定义的局部数组过大,超过 IAR 设置的栈大小(未使用FreeRTOS)
单步运行时,刚执行完定义数组的语句不会立马进入 HardFault_Hander 中断函数,一般是再执行几个语句后进入
3、使用FreeRTOS,定义的局部数组过大,超过分配给数组所在的 task 的栈空间
单步运行时,刚执行完定义数组的语句不会立马进入 HardFault_Hander 中断函数,一般是再执行几个语句后进入
4、使用FreeRTOS,动态申请内存超过分配给FreeRTOS 可用 heap(总heap为configTOTAL_HEAP_SIZE)
单步运行时,刚执行完动态申请的语句不会立马进入 HardFault_Hander 中断函数,一般是再执行几个语句后进入
printf用的也是FreeRTOS中 heap 资源
5、使用STM32CubeMX生成的stm32f407xx_flash.icf
如果使用IAR自带的stm32f407xE.icf没有问题
6、数组越界(读取数组中的值)
比如下面函数,没有注释的那几条语句限制,会出现硬件异常
u8 *my_strstr(u8 *buf, u16 length, char *str)
{
u8 *p;
u16 i,j;
for(i=,j=; j<strlen(str);)
{
if(str[j] == buf[i])
{
i++;
j++;
if(i >= length)
{
break;
}
}else
{
i++;
j = ;
// if(i >= length)
// {
// break;
// }
}
}
if(j == strlen(str))
{
p = buf+(i-strlen(str));
}else
{
p = NULL;
}
return p;
}
7、读不能读的地址的数据,和6类似
比如读STM32 unique ID,读的地址写错了,违法读数据
STM32 ------ HardFault_Hander 中断函数的更多相关文章
- STM32之中断函数
本文做中断函数的索引,帮助我们找到中断函数名.中断函数参数以及中断服务函数他们的来源,以便我们编程. 1)如果一个工程只有一个中断,则我们可以进行两个步骤就可以了: 使能中断通道 编写中断服务函数 2 ...
- LWIP network interface 即 LWIP 的 硬件 数据 接口 移植 首先 详解 STM32 以太网数据 到达 的第一站: ETH DMA 中断函数
要 运行 LWIP 不光 要实现 OS 的 一些 接口 ,还要 有 硬件 数据 接口 移植 ,即 网线上 来的 数据 怎么个形式 传递给 LWIP ,去解析 做出相应的 应答 ,2017 ...
- 编写一个stm32 svc关中断函数
做到了让stm32触发svc中断并传递进去参数然后切换到handler模式并修改特殊寄存器的值,从而达到关中断,但是其实这个程序直接就是特权级,故不进入handler模式也可以修改特殊寄存器..... ...
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
- STM32外部中断初理解
PA0,PB0...PG0--->EXTI0 PA1,PB1...PG1--->EXTI1 ....... PA15,PB15...PG15--->EXTI15 以上为GPIO和中断 ...
- (二)stm32之中断配置
一.stm32的中断和异常 Cortex拥有强大的异常响应系统,它能够打断当前代码执行流程事件分为异常和中断,它们用一个表管理起来,编号为0~15为内核异常,16以上的为外部中断,这个表就是中断向量表 ...
- 转载:STM32之中断与事件---中断与事件的区别
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚 ...
- STM32外部中断具体解释
一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...
- STM32之中断与事件---中断与事件的区别
STM32之中断与事件---中断与事件的区别 http://blog.csdn.net/flydream0/article/details/8208463 这张图是一条外部中断线或外部事件线的示意图 ...
随机推荐
- 部署mysql版本项目问题记录
一,com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure报错 将url从jdbc:mysq ...
- Daily Scrum 1 --团队项目所需时间估计以及任务分配
考虑到所有的任务不可能逐一细化分配给成员,我们将需要完成的任务进行了大致的分配.任务所需要的具体实现可以参看<学霸网站NABC> 所需要的总时间一共为44h. 我们会在以后的每日任务中进行 ...
- 团队作业 & alpha最终测试报告
本次ALPHA版本测试是依据Daily Scrum11.16(http://www.cnblogs.com/newbe/p/4101339.html)分配的任务有序进行的,从11.16~11.23.为 ...
- 奔跑吧DKY——团队Scrum冲刺阶段博客汇总
第一周:团队展示 团队选题 需求规格说明书 第二周:完善需求规格说明书.制定团队编码规范.通过团队项目数据库设计 奔跑吧DKY--团队Scrum冲刺阶段-Day 1-领航 奔跑吧DKY--团队Scru ...
- YQCB冲刺第二周第二天
今天的任务依然为实现查看消费明细的功能. 遇到的问题为从数据库中分类读取,实现图标的显示. 站立会议为: 任务面板为:
- python处理xml实例
""" Author = zyh FileName = read_xml_1.py Time = 18-9-26 下午5:19 """ fr ...
- Leetcode题库——28.实现strStr()
@author: ZZQ @software: PyCharm @file: strStr.py @time: 2018/11/6 20:04 要求:给定一个 haystack 字符串和一个 need ...
- 关于地图首页会卡 button background惹的祸
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sat=&q ...
- VS团队资源管理器(VS自带git)使用说明_使用VS自带git推送到远程存储库
使用git存储库是相当好的习惯,每次码完代码就推送到远程存储库,万一不小心把本地代码搞废了,或者硬盘坏了,或者中了勒索病毒,本地代码丢失了还能从服务器上下载.我曾经就中了一次勒索病毒,本地电脑上的所有 ...
- 子类使用父类的方法 或属性时候 里面的this 代表的是自己