很多人遇到这个问题都会想到是不是堆栈不够,就会跑去加堆栈。
原创 2023-04-21 16:04:37
258阅读
写程序偶尔会遇到程序死机的现象。这个时候,就需要debug来定位。通常情况下,程序会进入HardFault_Handler的死循环(针对stm32系列),我遇到过两次。第一次是使用数组之前,数组的下标清零了,导致无法访问串口的数据,俗称内存越界,你误以为访问串口的全局数组,其实是其他数据,uart[23],index=0,之后,想用uart[index-1]来访问数组的最后一个数据,这个时候就出现
转载 2019-10-22 13:42:00
450阅读
2评论
在用Keil对STM32进行仿真时,可能会遇到程序停在HardFault_Handler中断函数中。这
转载 2022-10-17 10:57:28
5891阅读
558
转载 2019-08-20 19:55:00
201阅读
2评论
STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。出现问题时排查的方法:发生异...
转载 2019-09-14 17:46:00
991阅读
2评论
  上午调试程序,把UWB的时间戳都转换成标准时间打出来了,但是发现,程串口输出一会之后就会停止,板子的灯也熄灭了。  时间戳转换标准时间代码如下:u8 TestBuff[150];int OutCounter = 0;double TxTimeStamp_Trans=0;TxTimeStamp_Trans= (uint64_t)(((uint64_t)TxTimeStamp[4] <&lt
原创 2021-04-17 14:10:53
1732阅读
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。STM32出现硬件错误可能有以下原因:(1)数组越界操作;(2)内存溢出,访问越界;(3)堆栈溢出,程序跑飞;(4)中断处理错...
转载 2021-07-05 15:45:36
3544阅读
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。STM32出现硬件错误可能有以下原因:(1)数组越界操作;(2)内存溢出,访问越界;(3)堆栈溢出,程序跑飞;(4)中断处理错...
转载 2022-02-08 16:17:48
2229阅读
EP 是什么说到这里,EP这个词才第一次出现,这个词的内涵之丰富,可能需要仔细说说。 我最早看到EP这个词,是在当时还是Google EP团队成员的James Wittaker写的那一个有名的「How Google Test」的系列博客中,内容我就不转述了,很多人都读过。 EP是Engineering Productivity的缩写,工程生产力的意思,这个团队,就是给整个大技术团队,甚至整个公司提
转载 2024-04-02 11:11:32
31阅读
看到有朋友遇到Hard Fault 异常错误,特地找到一篇飞思卡尔工程师写的一片经验帖,定位Hard Fault 异常。 Kinetis MCU 采用 Cortex-M4 的内核,该内核的 Fault ...
转载 2019-09-14 17:52:00
1457阅读
2评论
问题:STM32F4+uCOS OS_CPU_EXCEPT_STK_SIZE引起的HardFault_Handler() R14(LR)=0XFFFFFFF1 查看map文件,发现OS_CPU_ExceptStk[OS_CPU_EXCEPT_STK_SIZE]附近的全局变量被无故修改,且是由高地址写 ...
转载 2021-07-12 09:27:00
856阅读
2评论
标题中提及的对象是Flash扇区擦除,而实际上引起 HardFault_Handler 的是栈溢出。我直接在函数中创建了一个 uint32_t 类型的数组且数目为256个(1024字节),而程序中设定的堆栈却只有0x400(1024字节,这个可以在startup_stm32XXXX.s启动文件查找并 ...
转载 6天前
359阅读
STM32CUBEMX v5.5.0 配置FreeRTOS + LWIP,在MX_LWIP_Init()中的倒数第二句,osThreadNew(ethernetif_input, &link_arg, &attributes);这里是错误的,
原创 2022-02-11 15:25:19
600阅读
STM32CUBEMX v5.5.0 配置FreeRTOS + LWIP,在MX_LWIP_Init()中的倒数第二句,osThreadNew(ethernetif_input, &link_arg, &attributes);这里是错误的,link_arg显然不能是ethernetif_input的参数,正确的用法是osThreadNew(ethernetif_s...
原创 2021-07-06 13:52:56
425阅读
作者:鱼鹰OspreyID :emOsprey快一个月没有更新了,回家之前给自己安排了很多任务,然后回到家之后电脑就没有打开过,啥也没干,不知道有多少人回家...
转载 2022-04-22 22:30:27
707阅读
现在软件的模拟功能都是非常强大,但是有时候会用不好。 1.编译+调试打开软件工程 -> 编译 -> 调试这里的编译建议使用Build Target(第2个按钮)编译工程(如下图动画),也就是使用快捷键F7。Translate(第1个按钮)是编译当前活动文件。Rebuild all Target files(第3个按钮)是重新编译所有目标
BUG 定位使用技巧
转载 2022-01-06 17:42:47
1892阅读
  当硬件仿真遇到hardfault会进入响应的中断软件陷阱中void HardFault_Handler(void),此时通过view-registers中的 1 如果STACK=MSP,则查看SP的堆栈值,在memrory窗口输入sp的值回车,在地址内容之后的第21字节开始的4个字节为LR的值,在堆栈调用窗口右击选择show callee code,在反汇编窗口右击选择show code at
转载 2019-07-03 14:49:00
1004阅读
2评论
一、HardFault产生原因和常规分析方法二、HardFault解决方法分析三、HardFault回溯的原理四、操作分析流程:1.  心里明白徒手分析法2. CmBacktrace 天龙大法五、总结​一、HardFault产生原因和常规分析方法​在嵌入式开发中,偶尔会遇到Hard Fault死机的异常,常见产生Hard Fault的原因大致有以下几类:数组越界和内存溢出,譬如访问数组时,动态访问
转载 2022-03-03 14:56:20
211阅读
一、消息队列的概念1、消息队列的基本概念  消息队列简称队列,是一种常用于任务间通信的数据结构。  如下图:消息队列可以在任务与任务间、中断与任务间传递消息,实现任务接收来自其它任务或中断的不固定长度的消息。< 队列用于任务与任务间 >< 队列用于任务与中断间 >相比于裸机的全局数组,使用消息队列有如下优势:消息队列具有超时机制,可以让 FreeRTOS 内核有效地管理任务
  • 1
  • 2
  • 3
  • 4
  • 5