对原子提供的延时函数的初始化的理解

2019-07-24 13:33发布

库函数版本:                               东方红.png 在初始化中完成两件事:1.系统滴答时钟systick时钟来源的选择。这里有两个选择(如下),一个是HCLK时钟一个是HCLK的八分频。库的可读性还是很高的! 阿尔山.png
黑寡妇.png 2.计算fac_us和fac_ms参数。这两个参数的物理意义分别为1us振动的次数、1ms振动的次数。那么这里计算系数为什么用系统时钟SystemCoreClock而不是根据前面的选择的时钟呢?因为我们AHB预分频器一般设置为1(这个库就是设置为1),所以SYSCLK=HCLK,又因为选择的滴答时钟的时钟源为SysTick_CLKSource_HCLK_Div8,所以就是HCLK/8,即SYSCLK/8。下面就是根据fac_us和fac_ms参数和传递的要延时的时间参数计算装载初值完成延时函数了。寄存器数版本: 埃尔文.png 在初始化中完成两件事:1. 系统滴答时钟systick时钟来源的选择。2. 计算fac_us和fac_ms参数。需要强调的是传递参数为系统时钟(单位MHz)。配置的系统时钟是多少就传递多少。下面就是根据fac_us和fac_ms参数和传递的要延时的时间参数计算装载初值完成延时函数。综上,库函数版本和寄存器版本大体一致但略有不同。不同在于库函数版本中系统时钟初始化已经配好在启动文件中调用执行;并且外部可以通过SystemCoreClock访问获取时钟频率。但是寄存器版本并没有这样初始化时钟。 安抚.png 因此需要每次使用的时候配置。需要根据系统时钟来传递给延时初始化函数。

初入32,纯属个人理解,希望有耐心看我前面瞎BB的朋友希望多多指正和指导!
0条回答

一周热门 更多>