一.问题环境
最近在调试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
- 发现问题仍然是访问了结构体某个成员造成错误
三.原因分析
-
通过以上的结构体问题,我发现问题多半是由于结构体的大小不确定造成的。而结构体的大小通常由


2387

被折叠的 条评论
为什么被折叠?



