stm32 SysTick定时器LED
stm32 SysTick定时器LED
奔跑的夕阳_ 发表于4个月前
stm32 SysTick定时器LED
  • 发表于 4个月前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

SysTick定时器是一个24位向下计数器的内核外设,每计数一次耗时1/SYSCLK,当重装载寄存器的值减到0时,系统定时器产生中断。

SysTick寄存器:(参考CM3权威指南)

                        CTRL     控制及状态寄存器

                         LOAD    重装载数值寄存器

                          VAL      当前数值寄存器

                         CALIB    校准数值寄存器

SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm3.h 中。

调用SysTick_Config(ticks);通过形参ticks设置重装载寄存器的值,设置优先级为最低的15。清空当前计数器的值,设置系统时钟72M,使能中断与SysTick定时器。

SysTick定时器进入一次中断时间计算T=RELOAD * 1/SYSCLK。用一个变量t记录进入中断的次数,则计时时间为t * T。

定时函数:设置为进一次中断用时 1us,将要计时的时间作为全局变量在中断服务函数中递减。计时时间就是timedelay us

另一种定时方法是利用每次SysTick计数到0时CTRL的位16会被置1,而读取该位后会自动清0的特性。

——————————————————————————————————————————————————————————————————————————————————————

SysTick相关函数:

    SysTick_CLKSourceConfig() //Systick选择时钟源(FWLIB-misc.c文件中)

    SysTick_Config(uint32_t ticks) //初始化Systick(CORE-core_cm3.h文件中)

    void SysTick_Handler(void);//中断服务函数

原型如下:

函数1的参数

  SysTick_CLKSource_HCLK_Div8 外部时钟 72/8=9M 
  SysTick_CLKSource_HCLK 内部时钟 HCLK=72M

 

函数2原型

共有 人打赏支持
粉丝 2
博文 11
码字总数 3649
×
奔跑的夕阳_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: