[其他] HC32L13x_DDL_Rev2.1.0库,不该踩的坑

[复制链接]
 楼主| dontium 发表于 2024-7-20 19:50 | 显示全部楼层 |阅读模式
V2, L13, ev, HC
项目使用HC32L130,刚用,在做芯片初化时,有SysTick中断,怎么调也调不好,
程序是这样的:
int32_t main(void)
{

        ClkConfig();      //配置PLL时钟48MHz
        // 定时1mS
        SystemCoreClockUpdate();
        SysTick_Config(SystemCoreClock / 1000 );

        peripherInit();   // 各种外围初始化。有ADC、I2C、SPI、PWM等


    while(1)
    {
          ........
    }  
}

反复检查程序是正确的,又将小华的例程运行一次,可以产生SysTick
就又回到我的程序,从寄存器开始跟踪,检查tick的设置正常,然而经过peripherInit()以后,就不正常了。

最后发现,官方的初始化程序用到的延时函数,会用到系统的tick,
在ddl.c中,有delay1ms、delay100us、delay10us函数,均用改写SysTick寄存器组中的寄存器值。

解决办法:
1、自己编写不使用SysTick寄存器的延时函数,
2、把SysTick_Config放到peripherInit后面。

supergoodmoon 发表于 2024-7-23 11:20 | 显示全部楼层
这个是个坑啊,记住备用
yang377156216 发表于 2024-7-25 15:00 | 显示全部楼层
用的时候确实得注意下,我见过还有一个坑的例程,总喜欢初始化一个 systick 带中断的,在低功耗应用中可能就会出现进不了低功耗模式的时候,然后还不好找原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:官向官来民向民,穷人向的是穷人

151

主题

1175

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部