32单片机——基本定时器
1、定时原理
1.1 软件定时原理
使用纯软件(CPU死等)的方式实现定时(延时)功能
void delay_us(uint32_t us) {
us *= 72;
while(us--);
}
缺点:①延时不精准;②CPU死等(阻塞)
1.2 定时器定时原理
使用精准的时基,通过硬件的方式,实现定时功能
定时器核心就是计数器
定时器简易框图
1.3 定时器分类
常规定时器的区别
1.4 定时器特性表
2、基本定时器
2.1 简介
2.2 框图
2.3 溢出时间计算公式
:定时器溢出时间
:定时器的时钟源频率,72Mhz
ARR:自动重装载寄存器的值
PSC:预分频寄存器的值
3、定时器中断的配置步骤
3.1 配置定时器基础工作参数
void base_tim_init(uint16_t arr,uint16_t psc); //自己写的初始化函数
3.2 定时器基础MSP初始化
__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim); //配置NVIC、CLOCK等
3.3 使能更新中断并启动计数器
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
{
TIM_TypeDef *Instance; /* 寄存器基地址 */
TIM_Base_InitTypeDef Init; /* TIM时基所需参数 */
......#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
......
#endif
} TIM_HandleTypeDef;
typedef struct
{
uint32_t Prescaler; /* 预分频系数(范围:0x0000~0xFFFF) */uint32_t CounterMode; /* 计数模式 */
uint32_t Period; /* 自动重装载值(范围:0x0000~0xFFFF) */
uint32_t ClockDivision; /* 预分频因子,高级定时器会用到 */
uint32_t RepetitionCounter;
uint32_t AutoReloadPreload; /* 自动重装载预装载使能 */
} TIM_Base_InitTypeDef;
CounterMode 如下所示:
#define TIM_COUNTERMODE_UP 0x00000000U
/* 用作向上计数器的计数器 */
#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR/*!< 用作向下计数器的计数器 */
#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0/* 居中对齐模式1 */
#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1/* 居中对齐模式2 */
#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS/* 居中对齐模式3 */
AutoReloadPreload 如下所示:
#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U
/* TIMx_ARR寄存器未缓冲 */
#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE/* TIMx_ARR寄存器已缓冲 */
3.4 设置优先级,使能中断
HAL_NVIC_SetPriority();
HAL_NVIC_EnableIRQ();
在32单片机——外部中断_32中断-CSDN博客中有解释
3.5 编写中断服务函数
void TIM6_IRQHandler(void){
HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim); //中断公共处理函数
}
3.6 编写定时器更新中断回调函数
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
例子
使用基本定时器TIM6实现精准定时,使LED1每隔500ms翻转一次,在主函数用LED0的翻转来提示程序正在运行
分析:实现500ms定时 psc:7199;arr:4999
base_time.h
#ifndef _BASE_TIME_H
#define _BASE_TIME_H
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/delay/delay.h"//定时器初始化
void base_tim_init(uint16_t arr,uint16_t psc);#endif
base_time.c
#include "./BSP/TIMER/base_tim.h"
TIM_HandleTypeDef base_tim_handle; //定时器句柄
void base_tim_init(uint16_t arr,uint16_t psc){
base_tim_handle.Instance=TIM6; //寄存器基地址
base_tim_handle.Init.Prescaler=psc; //预分频系数
base_tim_handle.Init.Period=arr; //自动重装载值
base_tim_handle.Init.CounterMode=TIM_COUNTERMODE_UP; //计数模式
base_tim_handle.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE; //自动重装载预装载使能
//base_tim_handle.Init.ClockDivision= //预分频因子,高级定时器会用到
HAL_TIM_Base_Init(&base_tim_handle);
//开启定时器
HAL_TIM_Base_Start_IT(&base_tim_handle);
}
//定时器Msp回调函数
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim){
if(htim->Instance==TIM6){
//CLOCK
__HAL_RCC_TIM6_CLK_ENABLE();
//设置优先级
HAL_NVIC_SetPriority(TIM6_IRQn,0,0);
HAL_NVIC_EnableIRQ(TIM6_IRQn);
}
}
//中断服务函数
void TIM6_IRQHandler(void){
HAL_TIM_IRQHandler(&base_tim_handle); //中断公共处理函数
}
//定时器更新中断回调函数 定时500msvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if(htim->Instance==TIM6){
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
}
}
main.c
#include "./SYSTEM/delay/delay.h"
#include "./SYSTEM/usart/usart.h"
#include "./BSP/LED/led.h"
#include "./BSP/TIMER/base_tim.h"
int main(void){
uint8_t i=0;
HAL_Init();
sys_stm32_clock_init(RCC_PLL_MUL9); //设置系统时钟
delay_init(72);
led_init();
base_tim_init(4999,7199);
while (1){
i++;
if(i>20){
i=20;
delay_ms(100);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); //LED0闪烁,指示程序正常运行
}
}
}
相关文章:
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...

WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...