关于调试STM32F030系列单片机遇到的硬件错误中断问题

一.问题环境

最近在调试STM32F030K6单片机,用的STM32F0xx_StdPeriph_Lib_V1.5.0标准外设固件库。搭建了BSP+SYSTEM+HARDWARE+APP框架,同样的框架在STM32F103单片机及其BSP下,APP正常流畅运行,可更换为配置好的STM32F030K6的BSP及单片机板后,总是出现各种各样的问题。具体问题如下:

二.问题现象

  • 1.程序没有进入while循环就卡死,跑飞,进入硬件错误中断(HardFault_Handler)。

    • 开启仿真调试,发现程序卡在含有结构体变量的初始化部分。结构体通过传递指针地址作为参数,并传递给HARDWARE层

    • 在进入HARDWARE的函数后,将结构体指针的BSP配置部分继续传递给BSP的时候,还没有进入BSP层的函数的调用前,程序就跑飞了。进入了硬件错误中断。

    • 单片机采用8MHz的外部晶振,并通过采用6倍频的方式,使时钟频率达到48MHz,并且配置FLASH_SetLatency(FLASH_Latency_1)仍没有效果。

  • 2.将APP的结构体包含的成员结构体变量调下位置,可以运行到下一个语句,但仍然卡死。

    • APP的HARDWARE结构体成员定义方式由变量改为指针,并为每个HARDWARE结构体单独创建实例,把其地址传给APP的HARDWARE结构体成员指针。
    • 能够进入while循环。
    • 当运行while循环到达一定周期后,再次跑飞卡死,进入HardFault_Handler
    • 发现问题仍然是访问了结构体某个成员造成错误

三.原因分析

  • 通过以上的结构体问题,我发现问题多半是由于结构体的大小不确定造成的。而结构体的大小通常由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值