定时器开发基础

1定时器的基本概述

通过滴漏漏沙瓶这两个例子简单讲述定时器的基本工作原理。
STM32的常见的定时器资源: 系统嘀嗒定时器SysTick看门狗定时器WatchDog实时时钟RTC基本定时器通用定时器高级定时器

 系统嘀嗒定时器SysTick :这是一个集成在Cortex M3内核当中的定时器,它并不属于芯片厂商的外设,也就是说使用ARM内核的不同厂商,都拥有基本结构相同的系统定时器。主要目的是给RTOS提供时钟节拍做时间基准。
基本定时器:TIM6、TIM7。
通用定时器:TIM2、TIM3、TIM4、TIM5。在基本定时器的基础上,实现输出比较、输入捕获、PWM生成、单脉冲模式输出等功能。这类定时器最具代表性,使用也最广泛。
高级定时器:TIM1、TIM8。

2通用定时器的重要知识点 

通用定时器的基本结构组成
STM32的通用定时器,是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟或触发源以及外部时钟或触发源进行计数。

 通用定时器的基本工作原理
首先,定时器时钟信号送入16位可编程预分配器(Prescaler),该预分配器系数为0~65535之间的任意数值。预分配器溢出后,会向16位的主计数器(Counter Period)发出一个脉冲信号。
预分频器,本质上是一个加法计数器,预分频系数实际上就是加计数的溢出值。

 

定时器发生中断时间的计算方法
定时时间 = (Prescaler+1 ) X (Counter Period+1) X 1/ 定时器时钟频率
时钟信号1KHz,Prescaler为9,Counter Period为999,定时时间?

案例:外部中断信号控制LED灯开关 

XMF07AXMF07C开发板上,利用STM32CubeMXKeil5协同开发,完成以下的功能:
【1】利用TIM2实现间隔定时,每隔0.2秒将LED1的开关状态翻转。
【2】利用TIM3实现间隔定时,每隔1秒将LED2的开关状态翻转。
【3】修改TIM2的初始化代码,改为每隔0.5秒将LED1的开关状态翻转。

/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2)                  //处理TIM2间隔定时中断{AL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);}if(htim->Instance == TIM3)                 //处理TIM3间隔定时中断{HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);}
}
/* USER CODE END 0 */
/* USER CODE BEGIN 2 */HAL_TIM_Base_Start_IT(&htim2);        //启动定时器TIM2HAL_TIM_Base_Start_IT(&htim3);        //启动定时器TIM3/* USER CODE END 2 */

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 双边滤波数学模型 4.2 双边滤波的特性 4.3 FPGA实现架构 5.算法完整程序工程 1.算法运行效果图预览 将FPGA数据导入到matlab对比测试: 2.算法运行软件版本 vivado2019.2 …

实战之-Redis商户查询缓存

一、什么是缓存? 前言:什么是缓存? 就像自行车,越野车的避震器 举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样; 同样,实际开发中,系统也需要"避震器",防止过高…

最新!进口芯片龙头代理商名录更新

众所周知,代理商一直充当着厂家和客户中间的桥梁的角色。经过这么多年的变化和沉淀,摆在代理商面前的挑战与日俱增,定位也逐渐开始分化。 由于原厂对于市场的把控越来越严,各类原厂直营商城的上线以及原厂之间的并购直接主导了市…

基于Springboot+vue鲜花商城系统(前后端分离)

该项目完全免费 项目技术栈: 前端:vueelementUIecharts 后端:SpringbootmybatisMySQL 项目主要功能: 商品信息 商品分类 角色管理 公告管理 轮播图管理 订单管理 收货地址管理 日志管理 部分功能截图:

C++设计模式(李建忠)笔记1

C设计模式(李建忠) 本文是学习笔记,如有侵权,请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT:https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 文章目录 C设计模…

vcs 加速编译-分块编译

1. 前言 当我们的验证环境比较大的时候,尤其是soc仿真环境,编译一次可能就需要数小时,验证阶段我们很可能只是修改了我们的vseq或者checker,但是需要全部重新编译一次,又需要花费数小时,为了减少来回的迭代时间,减少不必要的重复编译,vcs userguide里面有提到分块编译的…

外观设计重要还是实用性重要?

外观设计和实用性在产品设计中都非常重要,二者并不是对立的关系,而是相辅相成的。以下是我对外观设计和实用性的看法: 首先,外观设计的重要性。产品的外观设计直接影响到产品的品牌形象、市场吸引力和用户体验。一个具有吸引力和…

防爆气象站需要如何维护

TH-FBCQX2 在工业生产中,防爆气象站是保障安全生产的重要设备之一。由于其特殊的使用环境和功能,防爆气象站的维护保养工作显得尤为重要。 一、日常维护保养 清洁:防爆气象站的外部和内部组件需要定期清洁,以去除灰尘、油渍和杂质…

使用pycharm连接读取orcl数据库的表

背景:工作需要 需求:使用pycharm访问远程oracle类型数据库的表,表中包含lob字段(这也是个坑!) 麻了,搞了一个星期,终于成功了,真可谓是每步都有坑,看的文章也…

Git学习笔记(第1章):Git概述

目录 1.1 版本控制 1.1.1 何为版本控制 1.1.2 为什么需要版本控制 1.1.3 版本控制工具 1.2 发展历史 1.3 工作机制 1.4 代码托管中心(远程库) Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。…

Linux7 安装 Oracle 19C RAC 详细图文教程

实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照:https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前,当然要先做好规划。具体包含以下几方面: 节点主机版本主机名实例名Grid/Oracle版本Publi…

大数据开发之Hadoop(优化新特征)

第 1 章:HDFS-故障排除 注意:采用三台服务器即可,恢复到Yarn开始的服务器快照。 1.1 集群安全模块 1、安全模式:文件系统只接收读数据请求,而不接收删除、修改等变更请求 2、进入安全模式场景 1)NameNod…