新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2022-8-1
- 在线时间
- 10 小时
|
5金钱
最近开始学习MiniPro STM32H750开发板。使用DAP进行烧录程序后发现正点的所有程序均无法使用,程序均会进入HardFault_Handler()。进一步调试发现为__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)出现异常,位置为stm32h7xx_hal_rcc.c第433行。
该宏完整展开为
#define __HAL_RCC_HSE_CONFIG(__STATE__)
do {
if ((__STATE__) == RCC_HSE_ON)
{
SET_BIT(RCC->CR, RCC_CR_HSEON);
}
else if ((__STATE__) == RCC_HSE_OFF)
{
CLEAR_BIT(RCC->CR, RCC_CR_HSEON);
CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);
}
else if ((__STATE__) == RCC_HSE_BYPASS)
{
SET_BIT(RCC->CR, RCC_CR_HSEBYP);
SET_BIT(RCC->CR, RCC_CR_HSEON);
}
else
{
CLEAR_BIT(RCC->CR, RCC_CR_HSEON);
CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);
}
} while(0)
根据输入参数知问题出现于这一段 if ((__STATE__) == RCC_HSE_ON)
{
SET_BIT(RCC->CR, RCC_CR_HSEON);
}
在测试中发现,如果程序全速执行,则必然进入HardFault_Handler(),但是如果在该宏后加一断点,等待一段时间再运行,则程序正常。
环境7℃,干燥
猜想可能是硬件没有加载完毕,需要时间。但官方教程和代码中并没有与该情况有关内容,或许是我没学习到。
是否是我的开发板出现硬件问题?
请大家解惑,谢谢。
|
最佳答案
查看完整内容[请看2#楼]
试一下新的代码就应该没问题了
http://www.openedv.com/docs/boards/stm32/zdyz_stm32h750_minipro.html
|