|
現(xiàn)象:
日前,在使用STM32F103C8時,分boot區(qū)和application區(qū),以便進(jìn)行升級,boot配置為48M,application配置為66M,發(fā)現(xiàn)在環(huán)境溫度上升到60多度后,產(chǎn)生了Hardfault錯誤。
分析:懷疑是取指問題。
定位:1、將application配置為48M后,問題消失。
2、配置boot、application均為66M,問題重現(xiàn)。
3、再重新配置為24M,問題消失。
4、去掉boot,僅留application,一直配置為24M\48M\66M,發(fā)現(xiàn)在66M時問題重現(xiàn)。
5、懷疑為系統(tǒng)頻率PLL配置為題。
6、對源代碼的系統(tǒng)時鐘配置函數(shù)進(jìn)行檢查。AHB,APH1,APH2對照手冊,為發(fā)現(xiàn)問題,查詢到
FLASH->ACR ,發(fā)現(xiàn)手冊里要求0~24M為0等待;24~48M為1個等待狀態(tài);48M為兩個等待狀態(tài)。
發(fā)現(xiàn)代碼的等待狀態(tài)為1個等待狀態(tài),重新配置:
if (HSE_VALUE <= 24000000)
{
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0;
}
else
{
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;
}
7、驗(yàn)證,發(fā)現(xiàn)問題解決。
另外一個問題,從application跳轉(zhuǎn)到boot后,進(jìn)行application升級后,發(fā)現(xiàn)ADC等外設(shè)訪問出錯:
問題所在:在進(jìn)行軟件跳轉(zhuǎn)前需要把ADC\SPI等外設(shè)disable掉。
|
|