STM32F103C8 TIM 配置完中断就 Hard Fault
现在检查配置问题,
其实,想问大家的 是,进入Hard Fault 的条件是什么?
想从条件返回去排除问题
通常这是硬件配置错误导致的。 你是手工代码配置还是用的cubeMX,建议你用cubeMX试试,另外厂家的BSP包有TIM例子,你可以跑一个试试。 嗯,cube是个好东西 一般是程序发生了非法访问导致的。
时钟、电源、中断、越界或非对齐都可能导致类似问题。 大概率是代码访问了不允许访问的总线地址,还有中断向量表如果放在了不能访问的地址,也会进hardfault 确实改了代码解决了问题,只是糊里糊涂的,没搞清原因 看贴出来的代码,main函数中并没有初始化系统时钟,清中断标志位。可再参考官方例程
可以在HardFalut下断点,停下后看函数调用堆栈,看在产生HardFalut之前都调了什么函数。 可以使用调试工具进行诊断。 先看看是不是你任务栈空间设置太小,溢出了? 数组越界操作; 内存溢出,访问越界; 堆栈溢出,程序跑飞; 中断处理错误; Keil MDK提供了硬件调试器和软件仿真等多种调试方式 通过调整代码、修改配置等方式解决Hard Fault问题。 在使用浮点数等特定数据类型时,必须保证堆栈对齐,否则可能会引发Hard Fault错误。 建议考虑是否出现了硬件错误从而进入了 用调试工具诊断一下 是不是配置错误啊 在访问数组元素时,如果索引超出数组范围,则会导致Hard Fault错误。 这是配置的有问题吧
页:
[1]
2