1.我们先利用Sys_tick来做一个微秒级的延时函数
(144条消息) Systick滴答定时器_一只大喵咪1201的博客-优快云博客
首先呢我们得知道什么是Sys_tick:Sys_tick是系统滴答定时器,使用Sys_tick来做延时是可以不占用系统定时器的,可以节约资源,如果是在stm32上,hal_Delay()说到底也是封装了一个滴答定时器
滴答定时器是倒计时
配置滴答定时器所需要的寄存器如下
CTRL最高位置1开启定时器
可以按照头文件中给的掩码来配置结构体变量
一般VAL都是设为0x00,如果计时完成SysTick_CTRL_COUNTFLAG_Msk标志位会置1,SysTick->CTRL和标志位进行与操作,如果标志位没有置1就说明计时未完成,就在原地等待,反之则退出等待
void Us_Delay(uint16_t us)
{
SysTick->LOAD = us*108; //设定重装值(初值)
SysTick->VAL = 0x00; //读取当前值并清除COUNTFLA:一般都是将其清0
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //启动定时器
while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));//读取SysTick->CTRL的值,如果计数完成COUNTFLAG置1,表示计数完成
SysTick->CTRL &