背景
今天在調(diào)試外設功能時,發(fā)現(xiàn)設置了使用外部時鐘之后程序運行異常,進行追蹤調(diào)試并與先前可以正常運行的項目進行對比之后發(fā)現(xiàn)這個問題可能是由于新版本的STM32CubeMX配置生成代碼時的BUG引起的。
測試環(huán)境
MCU: STM32H750VBT6
STM32CubeIDE: Version: 1.13.0 Build: 17399_20230707_0829 (UTC)
STM32CubeMX: v6.9.0
FW: STM32Cube FW_H7 V1.11.0
RCC:
問題現(xiàn)象
程序無法正確運行進入主循環(huán),調(diào)試程序發(fā)現(xiàn)程序在執(zhí)行 SystemClock_Config();
時卡死;進一步調(diào)試發(fā)現(xiàn)程序在下面代碼中卡死:
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
更進一步追蹤發(fā)現(xiàn)程序卡死在 __HAL_FLASH_GET_LATENCY
相關操作比對結(jié)果時。
問題解決
通過上面調(diào)試發(fā)現(xiàn)問題出在 FLASH LATENCY
相關操作中,對比先前版本的程序,同樣配置下 HAL_RCC_ClockConfig
函數(shù)中后一個參數(shù)為 FLASH_LATENCY_2
,所以這里修改即可。實測也是修改侯便可以正常使用了。文章來源:http://www.zghlxwxcb.cn/news/detail-606206.html
FLASH LATENCY
參數(shù)設置可以參考芯片參考手冊:
通常來說設置大點程序運行上會更加可靠,只是效率上變差。文章來源地址http://www.zghlxwxcb.cn/news/detail-606206.html
到了這里,關于STM32CubeMX v6.9.0 BUG:FLASH_LATENCY設置錯誤導致初始化失敗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!