基本定时器

本文介绍了STM32的基本定时器,包括其16位计数器、内部资源、时钟源、预分频器、计数器、自动重装载寄存器以及影子寄存器的工作原理。通过计算和代码示例展示了如何设置定时时间和处理中断。


前言

开发板:野火指南者stm32f103vet6
本文的内容是基于野火指南者这个板子所记录的一些关于基本定时器的知识。
以下内容完全来自野火家的教程。


一、基本定时器简介

1-计数器16bit,只能向上计数,只有TIM6和TIM7
2-没有外部的GPIO,是内部资源,只能用来定时
3-时钟来自PCLK1,为72M,可实现1~65536分频

二、功能框图

在这里插入图片描述

1.时钟源

在这里插入图片描述

2.控制器

  1. 控制器用于控制定时器的:复位、使能、计数、触发DAC
  2. 涉及到的寄存器为:CR1/2、DIER、EGR、SR

3.时基(定时器的心脏)

定时器最主要的就是时基部分:包括 预分频器、计数器、自动重装载寄存器。

三、预分频器

### CUBEMX 基本定时器使用方法 #### 创建和配置基本定时器STM32CubeMX环境中创建一个新的项目,选择目标MCU型号后进入主界面。为了配置基本定时器,在左侧的外设列表中找到TIMx(例如 TIM2),点击右侧箭头展开更多选项。 对于基本定时器的具体配置如下: - **模式**:选择“Basic Timer” - **Prescaler**:设定预分频系数,用于调整计数频率。此值取决于所需的定时精度以及系统时钟速度。 - **Counter Period (ARR)**:自动重装载寄存器值,决定了定时周期长度。 - **Clock Division(CKD)**:可选参数,通常保持默认设置即可[^1]。 完成上述配置之后保存并生成初始化代码至指定IDE环境内继续开发工作流程[^4]。 #### 启动与停止定时器 当硬件资源已经由STM32CubeMX正确分配完毕,则可以在应用程序逻辑里通过API接口来控制定时器的行为。要启动一个之前定义好的基本定时器实例`htim2`,可以调用以下函数: ```c // 开始定时器 if(HAL_OK != HAL_TIM_Base_Start(&htim2)) { // 错误处理... } ``` 同样地,如果想要暂停该定时器的操作,只需要执行相应的关闭命令: ```c // 关闭定时器 if(HAL_OK != HAL_TIM_Base_Stop(&htim2)) { // 错误处理... } ``` #### 定义回调函数 为了让程序能够响应定时事件的发生,还需要实现特定于应用需求的时间溢出中断服务子程序(ISR),即所谓的回调函数。这一步骤是在`main.c`文件中的适当位置重新声明并编写实际功能代码的地方[^3]: ```c void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { /* 用户自定义的功能 */ if(htim->Instance==TIM2){ // 当检测到是来自HTIM2触发时所采取的动作 } } ``` 以上就是利用STM32CubeMX配合HAL库操作基本定时器的一个简单介绍及示例教程。希望这些信息能帮助理解如何有效地运用这个特性丰富的组件构建自己的嵌入式解决方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

free(me)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值