HC32L136库 LCD驱动/时钟切换驱动 有BUG !
官方下载来的,HC32L136库 的例程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;
}
有官方技术人员,请确认一下,并尽快解决。
这BUG害惨了我,搞坏了2片单片机。
我现在芯片上电主程序增加1秒延时,以防出了BUG再也无法连上仿真器。
一般都有读取晶振切换稳定的判断的吧?要么加延时等待。 不用位变量操作,改为直接整个寄存器先读出来再与/或操作,再写入寄存器,就OK。 是编译器背锅,还是芯片硬件自身bug? 鬼知道还有没有其他的坑? 我也在用这个LCD驱动,但是还没发现啥问题?
页:
[1]