大意!6行代码,“报废”5片单片机!
生活随笔
收集整理的這篇文章主要介紹了
大意!6行代码,“报废”5片单片机!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天又雙叒叕是個心痛的日子。
近日,打樣一款新產品PCB,微控制器選用:國產MCU,HC32L130系列,程序移植于之前的項目。
PCB樣板焊接好后,第一次可以正常燒錄程序,再進行燒錄,IAR顯示無法連接MCU。
奇怪了!試了幾次不行,換一塊板子,?也是這種情況......
此時內心很恐慌,是不是MCU電路設計有問題?但是也不應該啊,該MCU已經應用好幾款產品了......
排錯離不開試錯法,找來最基礎的點亮LED程序測試,燒寫過程、次數均正??尚?。
說明程序有問題!
通過一系列嘗試和推測,將問題定位在時鐘配置上:之前使用HC32L130均是基于24MHz內部高速時鐘(HSI),而本款產品基于24MHz外部高速時鐘(HSE)。
配置24MHz內部高速時鐘(HSI)程序如下所示:
//將時鐘從RCH4MHz切換至RCH24MHz,
void App_Rch4MHzTo24MHz(void)
{
///<============== 將時鐘從RCH4MHz切換至RCH24MHz ============================== ///< RCH時鐘不同頻率的切換,需要先將時鐘切換到RCL,設置好頻率后再切回RCHSysctrl_SetRCLTrim(SysctrlRclFreq32768);Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);Sysctrl_SysClkSwitch(SysctrlClkRCL);///< 加載目標頻率的RCH的TRIM值Sysctrl_SetRCHTrim(SysctrlRchFreq24MHz);///< 時鐘切換到RCHSysctrl_SysClkSwitch(SysctrlClkRCH);///< 關閉RCL時鐘Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE);
}
在修改為外部高速時鐘程序時,沒再查閱芯片手冊,直接修改的參數,程序如下所示:
//將時鐘從RCH4MHz切換至XTH24MHz,
void App_Rch4MHzTo24MHz(void)
{
///<============== 將時鐘從RCH4MHz切換至XTH24MHz ============================== Sysctrl_SetRCLTrim(SysctrlRclFreq32768);Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);Sysctrl_SysClkSwitch(SysctrlClkRCL);///< 加載目標頻率的XTH值Sysctrl_SetXTHFreq(SysctrlRchFreq24MHz);///< 時鐘切換到XTHSysctrl_SysClkSwitch(SysctrlClkXTH);///< 關閉RCL時鐘Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE);
}
通過查閱手冊,配置過程果然存在問題。
最后修改代碼如下:
//將時鐘從RCH4MHz切換至XTH24MHz
void App_Rch4MHzToXth24MHz (void)
{
///<======================== 將時鐘從RCH4MHz切換至XTH24MHz ============================== ///< 切換時鐘前(根據外部高速晶振)設置XTH頻率范圍,配置晶振參數,使能目標時鐘,此處為24MHzSysctrl_SetXTHFreq(SysctrlXthFreq20_32MHz);Sysctrl_XTHDriverCfg(SysctrlXtalDriver3);Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384);Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);///< 時鐘切換Sysctrl_SysClkSwitch(SysctrlClkXTH);///< 根據需要選擇是否關閉原時鐘(此處關閉)Sysctrl_ClkSourceEnable(SysctrlClkRCH, FALSE);
}
最后運行調測,果然順利~
總結
以上是生活随笔為你收集整理的大意!6行代码,“报废”5片单片机!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVM算法实现光学字符识别
- 下一篇: 自然语言处理:网购商品评论情感判定