项目使用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后面。
|