在做项目用到时间片轮询架构 故用SysTick做中断。芯片型号为 stm32f051c8t6
一.我们先看f0的sysTick的时钟来源以及配置。
从数据手册可以看到 systick 来源于 HCLK 看下图
是 HCLK还是HCLK/8 是由寄存器 CTRL的第三位决定的 看下图
我们查看core_cm0.h中的 SysTick_Config函数可知 时钟选择为 HCLK 看下图
二、那么HCLK的时钟又是多少呢?(这里粗略讲一下,详细的可以看我以前写的 ”STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析“ 这篇文章)
在 SetSysClock()函数我们可以看到:
那么 SYSCLK时钟又是多少呢? 我们结合时钟分配图可以算出 48MHZ (我这里采用的是 内部晶振8M)
三、因此我们systick的时钟为48MHZ 那么怎么定时间呢?看数据手册可以知道 LOAD寄存器决定中断的时间:
48MHZ时钟 计数 48次 就是 1us
我这里计数 48000 那么就是 1ms 中断一次!!