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