|
本帖最后由 jyrpxj 于 2021-5-15 22:18 编辑
芯片:HC32L136K8 QFP64
IDE: MDK 5.33
仿真器: DAP
官方下载的库里面的例程
HC32L136_SDK\驱动库及样例\hc32l13x_ddl_Rev1.9.1\example\lcd\lcd_mode\source\main.c
int32_t main(void)
{
Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE); ///< 使能RCL时钟 //BUG:运行完此句后,hclk_prs变成了5 ,即32分频了
Sysctrl_SetRCLTrim(SysctrlRclFreq32768); ///< 配置内部低速时钟频率为32.768kHz
Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE); ///< 开启LCD时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); ///< 开启GPIO时钟
App_PortCfg(); ///< LCD端口配置
App_LcdCfg(); ///< LCD模块配置
Lcd_ClearDisp(); ///< 清屏
Lcd_WriteRam(0,0x0f0f0f0f); ///< 赋值寄存器LCDRAM0
Lcd_WriteRam(1,0x0f0f0f0f); ///< 赋值寄存器LCDRAM1
while(1)
{
;
}
}
再定位到库 HC32L136_SDK\驱动库及样例\hc32l13x_ddl_Rev1.9.1\driver\src\sysctlr.c
en_result_t Sysctrl_ClkSourceEnable(en_sysctrl_clk_source_t enSource, boolean_t bFlag)
{
en_result_t enRet = Ok;
uint32_t u32Temp;
_SysctrlUnlock();
bFlag = !!bFlag;
u32Temp = M0P_SYSCTRL->PERI_CLKEN;
switch (enSource)
{
case SysctrlClkRCH:
M0P_SYSCTRL->SYSCTRL0_f.RCH_EN = bFlag;
while(bFlag && (1 != M0P_SYSCTRL->RCH_CR_f.STABLE))
{
;
}
break;
case SysctrlClkXTH:
M0P_SYSCTRL->PERI_CLKEN_f.GPIO = TRUE;
M0P_GPIO->PDADS |= 3u;
M0P_SYSCTRL->SYSCTRL0_f.XTH_EN = bFlag;
while(bFlag && (1 != M0P_SYSCTRL->XTH_CR_f.STABLE))
{
;
}
break;
case SysctrlClkRCL:
M0P_SYSCTRL->SYSCTRL0_f.RCL_EN = bFlag; //BUG在此,运行完此句 hclk_prs变成了5 ,即32分频了
while(bFlag && (1 != M0P_SYSCTRL->RCL_CR_f.STABLE))
{
;
}
break;
case SysctrlClkXTL:
M0P_SYSCTRL->PERI_CLKEN_f.GPIO = TRUE;
M0P_GPIO->PCADS |= 0xC000;
M0P_SYSCTRL->SYSCTRL0_f.XTL_EN = bFlag;
while(bFlag && (1 != M0P_SYSCTRL->XTL_CR_f.STABLE))
{
;
}
break;
case SysctrlClkPLL:
M0P_SYSCTRL->PERI_CLKEN_f.ADC = TRUE;
M0P_BGR->CR_f.BGR_EN = TRUE;
delay10us(20);
M0P_SYSCTRL->SYSCTRL0_f.PLL_EN = bFlag;
while(bFlag && (1 != M0P_SYSCTRL->PLL_CR_f.STABLE))
{
;
}
break;
default:
enRet = ErrorInvalidParameter;
break;
}
M0P_SYSCTRL->PERI_CLKEN = u32Temp;
return enRet;
}
发现, M0P_SYSCTRL->SYSCTRL0这个寄存器怪得很,是位操作不正常吗?
用华大单片机的可以试试,这真的是个神仙级BUG吗?仿真调试过程,有图有真相
由于时钟配置不当,已经2片芯片因程序问题无法再连接仿真器,芯片变砖了。
===============编辑============
加入编译器的配置截图
===============编辑============
已解决:
有坛友贴图说例程跑起来没毛病,于是怀疑是编译器。
用V6的编译器就会出问题,用V5的就可以。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|