https://blog.csdn.net/electrocrazy/article/details/78173558…
(一)参考文献:https://blog.csdn.net/electrocrazy/article/details/78173558 在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中.这说明STM32出现了硬件错误. STM32出现硬件错误可能有以下原因: (1)数组越界操作: (2)内存溢出,访问越界: (3)堆栈溢出,程序跑飞: (4)中断处理错误: 遇到这种情况,可以通过以下2种方式来定位到出错代…
进入该模式,程序死机. 一般来说都是内存错误 1. 数组越界,装入数据溢出, 2. 堆和栈设置不当,这里面硬件的堆和栈在汇编文件中,如果有freertos等,重点检查,任务堆栈使用情况,一般任务堆栈溢出的可能性比较大. 重点检查函数,局部变量,减少临时函数,大数组创建,如果有尽量使用静态全局替代. 3. Heap_Size      EQU     0x200; 改点释疑:有些人认为调整heap_size大小会导致系统出错,有些人认为堆向上涨,此值不能调大,实际上这个是不正确的,我们看他的名字叫…
cube与I2C:https://www.cnblogs.com/121792730applllo/p/5044920.html I2C官网:https://www.i2c-bus.org/standard-mode/ Ⅰ.写在前面 上一篇文章是“STM32F10x_模拟I2C读写EEPROM”,讲述使用IO口模拟I2C总线通信,对EEPROM(AT24Xxx)进行读写操作的过程. 上一篇文章主要内容:I2C协议.模拟I2C底层驱动.EEPROM(AT24Xxx)单字节读写操作. 本文主要内容:…
/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       May-2015 ****************************************************************************** * < COPYRIGHT 2015 IS…
引子 STM32的硬件I2C很多人都对它望而却步.因为很多电工都说,STM32 硬件 I2C有BUG.不稳定.死机等等……最后都使用GPIO模拟I2C. 的确,模拟I2C好用.但是在我看来在一个72M的Cortex-M3的MCU上这样做非常不妥.一般来说I2C是一种慢速总线,就算工作在400kHz的快速模式上,I2C传送每个字节仍需要至少23us——还没有计算地址.起始信号和结束信号的发送.如果使用GPIO模拟的I2C,这23us的CPU时间都在空转中浪费了,而这23us已经可以做不少的事情了,…
Linux系统下到哪儿寻找硬件错误       当linux系统出现故障的时候,作为管理员首先要定位错误,现在linux有许多工具都能帮助用户寻找错误,要学会利用他们确定问题.这些工具包括dmesg.lspci.lsmod.syslog/messages和proc文件系统等,而且这些工具是根本,换句话说他们不会应为linux发行厂家不同,发行版年代不同而改变.希望大家熟练使用.     dmesg通常很有用,所以首先介绍该工具.dmesg是一个读取内核缓冲的命令.它里面具有内核消息.它会报告内核…
源: STM32硬件IIC…
源: STM32硬件IIC驱动设计 参考: STM32—硬件IIC主机通信 STM32’s I2C 硬件BUG引发的血案(qzm) 解决STM32 I2C接口死锁在BUSY状态的方法讨论…
STM32 硬件UART接收超时检测设置 -----------------本文作者"智御电子",期待与电子爱好者交流学习.---------------- 应用场景 在uart应用中有时候需要进行双工通信,主机需要对从机的数据进行接收超时检测,例如modbus协议,主机在接收从机数据在3.5个字节时间后认为数据包接收完毕.那在这种情况下,一般的做法是设置一个定时器,在每接收到一个字节时清零定时器重新计数,直到定时器超过3.5个字节时间后触发中断即默认数据包接收完毕. 以上的定时器设置…