IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32定时器可重触发单脉冲模式 -> 正文阅读

[嵌入式]STM32定时器可重触发单脉冲模式

18a4d863b1e95b182a625740daf15e7b.png

ST公司后期推出的STM32系列【比方L4、G0、G4、F7、H7等】的定时器功能都做了诸多拓展,其中可重触发单脉冲模式就是新拓展的功能之一。它跟常规单脉冲模式类似,但在实现方式及输出结果方面不太一样。下面以STM32G4系列为蓝本来介绍该内容。

对于可重触发单脉冲模式,每次触发事件会引起相应定时器通道立即输出事先设计好的脉宽【这里就是一个ARR+1宽度】,如果这个输出过程中又受到触发,输出则会在原来基础上继续延展一个新的脉宽,如下图所示:[截图来自STM32G4系列的参考手册]

412de7209a99d662321e7ba6d636e9c6.png

若使用定时器的可重触发单脉冲输出模式,该定时器须配置为复位+触发组合从模式。注意,可重触发单脉冲输出模式不支持计数器中心对齐计数模式。

如果计数器配置为向上计数模式,CCR值必须设置为0;

如果计数器配置为向下计数模式,CCR值必须设置为大于或等于ARR的值。

可重触发单脉冲模式又分两种模式:

可重触发单脉冲模式1:向上计数模式时,在触发信号来临前,输出有效电平,触发后输出指定宽度的无效电平;向下计数模式时的结果与向上计数模式时刚好相反。

可重触发单脉冲模式2:向上计数模式时,在触发信号来临前,输出无效电平,触发后输出指定宽度的有效电平;向下计数模式时的结果与向上计数模式时刚好相反。

b7c67221713f8c44587e1376e2d7c950.png

【注:有效电平/无效电平是针对比较输出模块的那个中间参考信号【OCxref】而言,有效电平就是高电平,无效电平即低电平,但这个信号到最终管脚输出端【OCx】往往还得经过极性选择电路,如果极性选择为高有效,最终管脚输出电平就跟OCxref信号一致,否则相反。】

下面简单介绍下实现过程。

这里使用STM32G4开发板做验证。使用TIM1的CH1做可重触发的单脉冲输出,通过CH2引入触发信号。我将按键信号引到TIM1-CH2作为触发输入,即每按键一次产生一个触发信号,让CH1输出单脉冲,当然它可接收连续触发使得单脉冲输出得以延展。

44b52944829f4733fc8b77308a993522.png

假设要求每次收到触发信号前输出无效电平,触发后输出一段时间的有效电平脉冲。这里极性选择为高有效,即有效电平为高电平、无效电平为低电平。我这里选择计数器向上计数模式、可重触发单脉冲模式2。

我们一起来看看使用CubeMx进行的配置操作。配置PC13的按键输入,硬件线路上将该信号连到PC1[TIM1-CH2],下面重点关注TIM1的配置。

目前CubeMx针对可重触发单脉冲模式的选项还不够完善,可以先按下面方式配置。

注意此时不要勾选单脉冲模式,我们后面到代码里去自行修改相应代码。

ef498123262f0de2032cc6a451877076.png

关于时基参数配置无须过多解释,根据具体情况来定即可。

c69b753b2cfbdf08bf32cd11ce20f5c9.png

关于TIM1-CH1的PWM模式的配置,见下图橙色方框内容,除了关注极性选择外,其它我们随便配置下或者不予理睬。当生成初始化代码后我们再去具体修改,改动的地方不多,后面还会提及。至于触发输入信号这里选择上沿触发。

06bed0e8c47b29b33286d09aa131b050.png

各种配置完成后,生成初始化代码。添加必要的用户代码。【这里是基于HAL库】

要添加的用户功能代码很简单,就下面一行【顺便提醒下,CubeMx库不要太老旧】。

HAL_TIM_PWM_Start(&htim1,?TIM_CHANNEL_1);

前面提过,那个关于TIM1-CH1的比较输出模式的初始化代码要做些修改。按照当前设计要求,将下面红框里的代码手动调整为下面内容。

a101dce06b89e939ca9de8ecf56ae070.png

之后对代码做编译调试,验证我们想要的结果。下面截图中蓝色波形源于按键信号,黄色为TIM1-CH1的单脉冲输出信号。

63920429f19d4b42064bb220d4445814.png

400d53b6eb58866deedd4dd420b417e5.png

不难看出,一般情况下,每按键一次则输出一个高电平脉冲,但当在输出脉冲的有效期间再次发生按键触发时,其输出会被延展。

整体上,实现上述功能需在熟悉定时器比较输出功能的基础上,并把开篇的可重触发特性及配置要求搞清楚,再对当前配置代码稍作调整即可。相信未来CubeMx在这个地方会增加相应选项,实现起来将更简洁明了。当我们知晓这个特性后,在以后的应用开发中可以结合具体场景加以灵活运用。因刚好最近有人问起这个话题,就顺便在此做个分享但愿帮到更多的人。

?==============================

往期话题阅读链接【点击即可阅读】:

1、STM32H7芯片SDRAM地址问题

2、STM32马达应用常见问题汇总链接

3、基于STM32G4芯片的DAC应用示例

4、通过STM32外部中断触发DMA传输

5、基于半主机机制实现prinf示例

6、STM32定时器单脉冲输出模式话题

d703b31a202b61080832637700687935.png

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:59:30  更:2021-12-13 13:00:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:28:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码