RM电控讲义【定时器篇】

HAL库最显著的特点是基于结构体从而利用句柄进而简化代码。

定时器初始化:

TIM6_DAC_IRQn是STM32G431单片机中定时器TIM6的中断请求名。TIM6是STM32G431的一个基本定时器,具有基本的定时功能。当累加的时钟脉冲数超过预定值时,TIM6能触发中断或触发DMA请求。此外,TIM6还被专门用于驱动数模转换器(DAC)。

在STM32G431中,TIM6的中断服务函数名为TIM6_DAC_IRQHandler(),而不是常见的TIM6_IRQHandler()。这是因为TIM6的中断不仅与TIM6自身的计时功能有关,还与DAC的转换完成有关。因此,当中断发生时,TIM6_DAC_IRQHandler()函数会被调用,以处理与TIM6和DAC相关的中断事件。

中断服务函数和中断回调函数的区别:

中断服务函数(ISR):

ISR是响应硬件中断而自动调用的函数。当特定的硬件事件(如定时器溢出、外部中断等)发生时,CPU会暂停当前正在执行的代码,跳转到与该硬件事件相关联的ISR执行。ISR通常是预先定义好的,并且在系统的初始化阶段配置到相应的中断向量表中。一旦中断发生,CPU会根据中断的类型查找中断向量表,然后跳转到相应的ISR执行。

中断回调函数(Interrupt Callback Function):

中断回调函数通常不是直接由硬件中断触发的,而是由某个库函数或框架在适当的时候调用的。它允许用户或开发者定义在某个特定事件发生时应该执行的代码。

中断回调函数通常用于异步事件处理,如网络请求完成、定时器到期、异步I/O操作完成等。当这些事件发生时,相应的回调函数会被调用。

中断回调函数通常不是由系统预先定义好的,而是由用户或开发者根据需要编写的,并通过某种机制(如注册回调函数)与事件处理框架关联起来。ISR是响应硬件中断而自动调用的函数,而中断回调函数是在特定事件发生时由框架或库调用的函数。

ISR通常是由系统预先定义并配置好的,而中断回调函数是由用户或开发者编写的。

ISR主要用于处理硬件事件,而中断回调函数主要用于处理异步事件。

无需手工调用,HAL库中已经对HAL_TIM_PeriodElapsedCallback做好了调用机制。

定时器达到阈值并归零的时候调用回调函数,让LED灯翻转,如此出现LED一闪一闪的现象仿佛有了定时。这个不属于PWM波输出。

定时器中断:

定时器的PWM功能:

通用定时器的时钟为APB1时钟的2倍, 而APB1为36M, 所以定时器时钟 = 72Mhz

定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us. 其中Ft=定时器工作频率,单位:Mhz

arr: 自动重装值        psc: 时钟预分频数

    TIM_OC_InitTypeDef timx_oc_pwm_chy  = {0};       /* 定时器PWM输出配置 */

TIM_OC_InitTypeDef,该结构体用于初始化定时器(TIM)的输出比较(Output Compare.输出比较功能是定时器的一种工作模式,常用于生成PWM(脉冲宽度调制)信号、测量脉冲宽度或周期等

是指HAL库中的定时器3的通道2

重映射就是把引脚的外设功能映射到其他的引脚上,但不是可以随便映射的,具体的映射关系参考引脚功能表。

stm32 TIM2 重映射_pa1 tm2重映射-CSDN博客

【STM32】STM32端口复用和重映射(AFIO辅助功能时钟)_stm32 tim5映射-CSDN博客

可以看出,我们可以将串口1重映射到PB6、PB7引脚上。

部分重映射和完全重映射:

部分重映射允许你将定时器的一个或多个输出通道重新映射到不同的GPIO引脚,而定时器的其他通道和功能则保持默认的映射。这种重映射方式通常用于那些需要改变特定通道输出引脚的应用,而不需要改变整个定时器的所有通道。全重映射则更加彻底,它会将定时器的所有输出通道和功能重新映射到不同的GPIO引脚。这种重映射方式适用于那些需要完全改变定时器输出引脚配置的应用。

在main.c中extern定时器句柄。

extern TIM_HandleTypeDef g_timx_pwm_chy_handle;     /* 定时器x句柄 */

__HAL_TIM_SET_COMPARE(&g_timx_pwm_chy_handle, TIM_CHANNEL_2, ledrpwmval);

定时器的输入捕获:

定时器的输入捕获(Input Capture)功能主要用于测量脉冲宽度和PWM(脉冲宽度调制)的输入测量。通过配置定时器来检测不同的跳变边沿(如上升沿或下降沿),可以实现对高低电平的计时捕获。具体来说,输入捕获就是用定时器检测引脚上的电平时间,可以检测高电平时间和低电平时间,然后计算引脚上信号的频率和占空比。这对于需要精确控制时间或测量信号特性的应用非常有用,例如在电机控制、通信协议、传感器测量等领域。此外,当定时器捕获到特定的边沿信号时,会产生一个捕获中断。这个中断可以用于触发特定的操作或数据处理,例如在微控制器中读取当前定时器的值,从而得到脉冲宽度或周期等信息。

高级定时器可以输出指定个数的PWM波,例如输出5个PWM波(控制TIM8_CH1, 即PC6输出5个脉冲。

ARR自动重装载值    PSC预分频值   CCR输出比较值(PWM输出比较功能)

/* 设置时钟为72Mhz的情况下: */

atim_timx_comp_pwm_init(1000 - 1, 72 - 1); /* 1Mhz的计数频率 1Khz的周期,第一个参数为ARR的值,第二个参数为PSC的值 */

TIM8->CCR4  = 1000 - 1; /* 通道4 相位100% ,修改的是CCR的值*/

TIM8->CCR4  = 500 - 1;/* 通道4 相位50% */

定时器输出比较功能的初始化(一次打开TIM8四个通道)

HAL_TIM_OC_ConfigChannel(&g_timx_comp_pwm_handle, &timx_oc_comp_pwm, TIM_CHANNEL_4); /* 初始化定时器的输出比较通道4 */

__HAL_TIM_ENABLE_OCxPRELOAD(&g_timx_comp_pwm_handle, TIM_CHANNEL_4); /* 通道4 预装载使能 */

HAL_TIM_OC_Start(&g_timx_comp_pwm_handle, TIM_CHANNEL_1);

高级定时器还具有互补输出带死区控制功能,常用于BLDC的三个半桥控制。

高级定时器(如TIM1和TIM8)通常具有刹车输入(Brake Input)功能。刹车输入用于快速停止定时器的计数操作,并可能关闭相关的输出通道,以便在紧急情况下保护外围设备。

//刹车   HAL_TIM_OC_Stop(&htim1, TIM_CHANNEL_1); // 停止相关输出

当刹车输入被激活时,定时器会立即停止,从而实现紧急制动的效果

cubemx中关于TIM的名词含义:

TIM1_BKIN 是STM32微控制器中高级定时器TIM1的一个刹车输入(Brake Input)引脚。这个引脚用于接收一个外部信号,当该信号被触发时,会导致TIM1定时器立即停止其计数操作,并可能关闭相关的输出通道。

TIM1_CH1N 是STM32微控制器中高级定时器TIM1的一个输出比较通道的互补输出。TIM1_CH1N 是 TIM1_CH1 的互补输出,通常用于实现TIM1的同步PWM(脉冲宽度调制)模式。

atim_timx_cplm_pwm_set(300, 100);   /* 占空比:7:3, 死区时间 100 * tDTS */

定时器的PWM输入模式是一种特殊的工作模式,用于测量PWM信号的脉冲宽度和频率。在PWM输入模式下,定时器将捕获PWM信号的上升沿和下降沿,从而测量出PWM信号的周期和脉宽。具体来说,PWM输入模式通常使用两个捕获通道(如IC1和IC2)来分别捕获PWM信号的上升沿和下降沿。当PWM信号的上升沿到达时,IC1捕获该信号,并启动定时器计数。当PWM信号的下降沿到达时,IC2捕获该信号,并停止定时器计数。通过测量定时器计数的值,可以计算出PWM信号的周期和脉宽。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言-指针初学速成

1.指针是什么 C语言指针是一种特殊的变量,用于存储内存地址。它可以指向其他变量或者其他数据结构,通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存,以及进行复杂的数据操作。在C语言中&#…

如何快速卸载windows电脑的一些软件?

本系列是一些电脑常规操作的普及,有需要借鉴即可 注:每个电脑都会有差异,参考即可。 其实大部分软件你删除桌面上的图标不等于删除,因为桌面上的那个图标就是一个简单的快捷方式而已。 在这里插入图片描述 那如何正确的卸载软件呢…

数据安全:超越威胁搜寻,监控数据流和用户行为

网络安全曾经是建立在严格协议和反应措施之上的堡垒,现在正在经历变革。随着数字环境变得更加复杂和数据驱动,对保护数字资产采取细致入微的方法的需求比以往任何时候都更加明显。这种演变标志着与传统威胁检测的背离,转向强调上下文并抢占用…

windows下快速安装nginx 并配置开机自启动

1、下载地址:http://nginx.org/en/download.html 2、启动nginx 注意⚠️ 不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程。 在nginx.exe目录,打开命令行工具&#xf…

缓存篇—缓存击穿

在很多场景下,我们的业务通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访问的数据被称为热点数据。 如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,就无法从缓存中读取,直接…

AD24-蛇形走线

一、单端蛇形走线 1、公差参数 2、布线-网络等长调节 3、参数说明 ①手工输入绕线的长度 ②参照个网络的长度绕线 ③按照自身设置的规绕线(一般选用) 4、调节 5、最后 二、差分蛇形走线 1、布线-差分对网络等长调节 2、如在选中的时候出现问题,按CtrlD…

安卓游戏开发之音频技术优劣分析

一、引言 在安卓游戏开发中,音频处理技术扮演着至关重要的角色,它不仅能够增强游戏的沉浸感和玩家体验,还能通过声音效果传达关键的游戏信息。以下将对几种常见的安卓游戏音频处理技术进行优劣分析,并结合应用场景来阐述其特点。 …

自学Python第十八天-自动化测试框架(二):DrissionPage、appium

自学Python第十八天-自动化测试框架(二):DrissionPage、appium DrissionPage环境和安装配置准备工作简单的使用示例控制浏览器收发数据包模式切换 浏览器模式创建浏览器对象访问页面加载模式none 模式技巧 获取页面信息页面交互查找元素ele()…

C 嵌入式系统设计模式 09:硬件适配器模式

本书的原著为:《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》,讲解的是嵌入式系统设计模式,是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述访问硬件的设计模式之二&…

【C语言】程序编译链接详解

目录 一、程序的翻译环境和执行环境 二、编译链接过程 2.1、程序编译过程 2.2、程序编译链接的阶段 2.2.1、预处理 2.2.2、编译 2.2.3、汇编 2.2.4、链接 2.2.5、整体过程 三、运行环境 一、程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不…

odoo16-API(Controller)带有验证访问的接口

odoo16-API(Controller)带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…

要赢,且不止一次,2024创维汽车势不可挡!

随着除夕钟声的敲响,创维汽车迎来了全新的一年。过往取得的成绩已成为了历史,全新的未来还有待奋斗者们去开创。为辞旧迎新,创维汽车于2月22日及2月23日召开了“新春启航,共谋发展”营销会议,为2024做下全新布局。 创维…

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器,centos8.2系统,docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …

【若依(ruoyi)】Java---如何在Apifox上传params参数--延伸--如何在Apifox上传Map类型参数

在使用若依开发过程中写接口的时候想在params中添加参数,但是使用params.key这种形式在后端是接收不到传过来的参数的,于是百般调研(百度),终于找到一个解决办法,就是在参数前后加上%5B和%5D,这两个参数会被编译为"["和"]",于是就对得上了,后端成功接受到参…

基于Java在线宠物店商城系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意,本文档仅仅是介绍烧录器的资料构成,并非烧录器的说明书,详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料,通常稳定发布版本可以从 www.amomcu.cn 下载, 也可以向我们客服获取最新版本, 获…

学习负载均衡的算法

什么负载均衡 负载均衡是一种计算机技术,用于在多个系统、网络链接、硬盘驱动器、CPU等之间分配工作负载,以优化资源使用、最大化吞吐量、最小化响应时间、并避免任何单一资源的过载。在网络负载均衡的情况下,它可以帮助将网络流量有效地分配…

WebAPI [Swagger] 发布ISS不能生成xml文件问题记录

因为Swagger文件的注释是读取项目xml的。 除了Debug要输出xml,正式发布release时也要输出xml

Camtasia2024试用版最新核心功能介绍

Camtasia的试用版通常提供与正式版本相同的核心功能,但可能会有一些限制或水印。以下是试用版中可能包含的一些功能: 屏幕录制:试用版允许用户录制电脑屏幕上的活动,无论是全屏、特定区域还是特定窗口。用户可以选择录制光标、添加…

LeetCode LCR 055.二叉搜索树迭代器

实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在…