本帖最后由 chenxiaolang 于 2019-12-19 01:15 编辑
本人ARM小白,用HC32F030J8TA自己做的开发板。个人觉得一款MCU,核心部分或难点在于:启动代码、时钟配置、中断配置,这些“最小系统”稳定了其他外设就是“填寄存器”了,和内核关系不大。本次是调试Systick一个小意外,共享经验。
1、采用XTH时钟源,PLL倍频到48MHz给内核使用,再分频到6MHz给外设。
2、系统运行需要一个节拍定时器,采用Systick 1ms中断实现。从官方规格书框图可以看到,Systick时钟源是PCLK,也就是外设时钟。
3、通过下面的代码配置成1ms中断,应该没问题,但实际中断频率远大于1ms
4、起初怀疑是系统时钟配置不正确,把HCLK(内核时钟)和PCLK(外设时钟)分频后映射到PA01和PA02,分别测试到6MHz(48M/8)和(6M/8)750KHz,结果符合预期。
5、再查规格书,发现SysTick时钟源只能选内核时钟或外部低频时钟,原来是被第2步中的那张时钟框图误导了,希望厂家能及时纠正。
6、更改代码如下,实现了1ms中断,符合预期。
7、经查证其他资料,Cortex核的SysTick是和内核深度绑定的,不是一个芯片设计方随意更改的“外设”,不光是HC32系列,其他厂家的SysTick均是采用内核时钟。
|