19. SysTick 您所在的位置:网站首页 六级延迟到什么时候 19. SysTick

19. SysTick

2024-05-25 05:46| 来源: 网络整理| 查看: 265

19.3.2.2. 代码分析¶

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

SysTick配置库函数

代码清单:SysTick-1SysTick配置库函数¶ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { // 不可能的重装载值,超出范围 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); } // 设置重装载寄存器 SysTick->LOAD = (uint32_t)(ticks - 1UL); // 设置中断优先级 NVIC_SetPriority (SysTick_IRQn, (1UL CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; return (0UL); }

用固件库编程的时候我们只需要调用库函数SysTick_Config()即可,形参ticks用来设置重装载寄存器的值,最大不能超过重装载寄存器的值224, 当重装载寄存器的值递减到0的时候产生中断,然后重装载寄存器的值又重新装载往下递减计数,以此循环往复。紧随其后设置好中断优先级, 最后配置系统定时器的时钟为168M,使能定时器和定时器中断,这样系统定时器就配置好了,一个库函数搞定。

SysTick_Config()库函数主要配置了SysTick中的三个寄存器:LOAD、VAL和CTRL,有关具体的部分看代码注释即可。 其中还调用了固件库函数NVIC_SetPriority()来配置系统定时器的中断优先级,该库函数也在core_m4.h中定义,原型如下:

__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { if ((int32_t)IRQn SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有