自己开公司 自己做网站,企业网站需求分析,wordpress展开,网站优化工具文章目录 16.0 前言16.1 SysTick 简介16.2 SysTick 寄存器介绍16.2.1 CTRL 控制及状态寄存器16.2.2 RELOAD 重载数值寄存器16.2.3 Current当前数值寄存器16.2.4 CALRB 校准值寄存器16.3 SysTick 定时实验16.3.1 编程要点16.3.2 代码分析16.3.2.1 SysTick 配置库函数16.3.2.2 配… 文章目录 16.0 前言16.1 SysTick 简介16.2 SysTick 寄存器介绍16.2.1 CTRL 控制及状态寄存器16.2.2 RELOAD 重载数值寄存器16.2.3 Current当前数值寄存器16.2.4 CALRB 校准值寄存器 16.3 SysTick 定时实验16.3.1 编程要点16.3.2 代码分析16.3.2.1 SysTick 配置库函数16.3.2.2 配置 SysTick 中断优先级16.3.2.3 SysTick 初始化函数16.3.2.4 SysTick 中断时间的计算16.3.2.6 SysTick 定时函数16.3.2.7 SysTick 中断服务函数16.3.2.8 主函数 16.3.3 延时16.3.3.1 us16.3.3.2 ms 16.0 前言
SysTick 是属于 Cortex 内核的外设,内嵌在 NVIC 中,无论在 Cortex-M3、M4 和 M7,他们都是完全一样的
16.1 SysTick 简介
系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK
一般我们设置系统时钟SYSCLK 等于 AHB 时钟在 RT1052 中,AHB 时钟等于 528MHZ。SysTick 是属于 Cortex-M 内核的外设,所以所有基于 Cortex-M 内核的单片机都具有这个系统定时器
16.2 SysTick 寄存器介绍
SysTick—系统定时器有 4 个寄存器 与STM32F407中的一样
16.2.1 CTRL 控制及状态寄存器 16.2.2 RELOAD 重载数值寄存器 16.2.3 Current当前数值寄存器 16.2.4 CALRB 校准值寄存器
系统定时器的校准数值寄存器在定时实验中不需要用到。
16.3 SysTick 定时实验
16.3.1 编程要点
1、设置重装载寄存器的值 2、清除当前数值寄存器的值 3、配置控制与状态寄存器
16.3.2 代码分析
16.3.2.1 SysTick 配置库函数
SysTick 配置库函数 (core_cm7.h)
1 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
2 {
3 // 不可能的重装载值,超出范围
4 if ((ticks - 1UL) SysTick_LOAD_RELOAD_Msk) {
5 return (1UL);
6 }
7
8 // 设置重装载寄存器
9 SysTick-LOAD = (uint32_t)(ticks - 1UL);
10
11 // 设置中断优先级
12 NVIC_SetPriority (SysTick_IRQn, (1UL __NVIC_PRIO_BITS) - 1UL);
13
14 // 设置当前数值寄存器
15 SysTick-VAL = 0UL;
16
17 // 设置系统定时器的时钟源为 AHBCLK
18 // 使能系统定时器中断
19 // 使能定时器
20 SysTick-CTRL = SysTick_CTRL_CLKSOURCE_Msk |
21 SysTick_CTRL_TICKINT_Msk |
22 SysTick_CTRL_ENABLE_Msk;
23 return (0UL);
24 }用固件库编程的时候我们只需要调用库函数 SysTick_Config() 即可。
形参 ticks 用来设置重装载寄存器的值最大不能超过重装载寄存器的值 2的24次 当重装载寄存器的值递减到 0 的时候置位SysTick 控制及状态寄存器的位 16 或者产生中断(如果中断已经使能)然后重装载寄存器的值又重新装载往下递减计数,以此循环往复。 设置好中断优先级 配置系统定时器的时钟等于 AHBCLK 使能定时器和定时器中断/