8.SysTick定时器

SysTick为系统滴答定时器

定时器分类

内核级定时器(系统滴答定时器)

延时定时中断(给系统提供时钟节拍)给操作系统提供时基(任务调度)FreeRTOS

UCOS5ms

基本定时器

延时定时中断时间片(实现两盏LED灯同时以一个不同速度闪烁,轮询标志位的改变)

(M4两个TIM6TIM7)开启DAC转换

通用定时器

延时定时中断输出比较(PWM)输入捕获(捕获高低电平时钟)逻辑分析仪示波器

高级定时器

延时定时中断输出比较输入捕获电机死区刹车

其他定时器

看门狗---产生复位

RTC---1s定时期----实时时钟

配置SysTick系统滴答定时器

Cortex‐M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同,你需要检视芯片的器件手册来决定选择什么作为时钟源。

配置延时中断步骤

  1. 选择时钟源,复位值是默认外部时钟,置1为内核时钟168Mhz,外部时钟进入要通过8分频,所以是21Mhz

  2. 计算重装载的值,然后写入重装载寄存器

  3. 写当前值寄存器,写的话会清零计数值并重新装载,标志位清零

  4. 中断位使能,中断优先级配置

  5. 使能定时器

void SysTick_NVIC(u32 ms)
{
	SysTick->CTRL &= ~(1<<2);//选择外部时钟源,21Mhz,复位值默认
	SysTick->LOAD = 21000 * ms - 1;//重装载寄存器写入值
	SysTick->VAL = 0;//读一下当前值寄存器,清空寄存值

	SysTick->CTRL |= (1<<1);//中断位使能,计数到0触发中断

	//NVIC配置
	u32 pir = NVIC_EncodePriority(5,1,2);//优先级编码计算函数
	NVIC_SetPriority(SysTick_IRQn,pir);//配置具体中断源
	NVIC_EnableIRQ(SysTick_IRQn);//中断源使能
	
	SysTick->CTRL |= 1;//滴答定时器使能
}
void SysTick_Handler(void)
{
	SysTick->VAL = 0;//写一下当前值寄存器,重装载计数并清空标志位
	printf("系统滴答!\r\n");
}

值得注意的是,延时中断是在定时器计数完后进入中断服务函数,所以定时器使能不能关,且在同一时间最好用定时器实现一种功能

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 13:54:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 13:54:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 13:54:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 13:54:02       18 阅读

热门阅读

  1. mysql的触发器,存储过程

    2024-04-29 13:54:02       15 阅读
  2. Elasticsearch索引状态管理实战指南

    2024-04-29 13:54:02       18 阅读
  3. Redis(五) Redis锁

    2024-04-29 13:54:02       15 阅读
  4. Ubuntu 22.04 安装Oracle 11g Express Edition

    2024-04-29 13:54:02       14 阅读
  5. CSS基础:4类组合选择器以及5个注意事项

    2024-04-29 13:54:02       18 阅读
  6. 【面经&八股】搜广推方向:面试记录(十三)

    2024-04-29 13:54:02       14 阅读
  7. 权利压迫攻击(Grinding Attack)是什么

    2024-04-29 13:54:02       13 阅读
  8. qt中lineEdit设置为不可编辑

    2024-04-29 13:54:02       13 阅读
  9. Android 振动和触感反馈功能失效问题分析

    2024-04-29 13:54:02       13 阅读
  10. react怎么制作选项卡

    2024-04-29 13:54:02       14 阅读
  11. React动态菜单权限控制完全指南

    2024-04-29 13:54:02       11 阅读
  12. 【c++】weak_ptr和观察者模式

    2024-04-29 13:54:02       12 阅读
  13. B树、B+树、B*树

    2024-04-29 13:54:02       11 阅读
  14. Oracle——PLSQLl入门

    2024-04-29 13:54:02       9 阅读
  15. Springboot自定义注解+aop实现redis自动清除缓存功能

    2024-04-29 13:54:02       15 阅读
  16. docker部署MongoDB

    2024-04-29 13:54:02       10 阅读