嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记14:PWM捕获

系列文章目录

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记03:G4时钟结构

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记04:从零开始创建工程模板并开始点灯

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记05:Systick滴答定时器

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记06:按键输入

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记07:ADC模数转换

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记08:LCD液晶屏

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记09:EEPROM

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记10:USART串口通讯

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记14:PWM捕获

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记15:PWM输出

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记16:蓝桥杯编程手册

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记17:第十四届省赛真题



前言

这节讲解一下PWM捕获的基础知识。PWM捕获是指我们的单片机可以测量输入到它管脚上的方波的频率或者占空比,捕获就是说我们可以捕捉外部方波的信息。这就是我们这节要学习的内容。

一、基础知识

首先我们看一下电路图,这里有两个555芯片构成了一个方波发生器。

我们可以通过R40和R39两个电位器,就可以在555芯片的3号管脚输出一个方波,方波的频率就是通过R40和R39进行调节。3号管脚通过跳帽J9、J10接入PA15和PB4两个管脚。PA15和PB4分别可以配置成TIM2_CH1和TIM3_CH1,也就是定时器2的1通道和定时器3的1通道,用他们来捕获外部方波的频率和占空比。

捕获频率的作用有很多,比如说无人机上很多接收机的信号都是方波信号,也可以用来测量霍尔传感器的输出等等。但是我们这里只需要测量555的输出就行了。我们不需要知道555的具体接法是什么,只需要知道他可以通过调节这两个电阻就能产生不同频率的方波就行了,而我们的任务就是要用单片机测量他们的频率。另外还要注意好每个管脚分别对应着定时器的哪个通道。

此外呢,我们还要知道如何用示波器来观察方波的频率和占空比,只需要把示波器接在J9、J10两个跳线上就行了,我们调节R39、R40就可以看到方波的频率是在变化的。大致范围是在1-23kHz,并且频率太快(20k以上)的话波形是会失真的,波形正常时的频率范围应该在5k左右。占空比大概就是在50%。

二、测量单路频率

我们先研究U8芯片,通过R40可以产生频率可变的方波,然后通过跳帽J10接到了PA15管脚,对应TIM2_CH1通道来捕获。

首先看一下编程思路:每次上升沿中断,获取CNT值(定时器的计数值),并重新清零CNT值,重新计时。CNT的值就是一个PWM的周期,通过周期可以获得其频率(周期的倒数)。

我们可以把定时器配置成每us加1,那么如果CNT=1000,就相当于周期就是1ms,对应的频率就是1kHz。

程序设计步骤:

1.用“模板”生成代码

2.配置TIM2的PA15作为TIM2_CH1的输入捕获,注意要配置输入捕获模式,并勾选中断NVIC(一定不能忘)

3.根据需求配置TIM2_CH1的分频值,推荐配置成1us计数一次(因为系统时钟80MHz,我们想要1us就要1MHz,也就是分频80,因为从0开始算所以设置成79。up是上升沿产生中断,默认,不用更改。Counter Period是计时周期,它是32位的,也就是0—0xffffffff,如果超过这个这个周期就会溢出,所以我们把它设置成最大。)

4.移植文件到编程工程

  • main.c包含tim.h头文件
  • 添加tim.c的源文件和TIM相关的HAL库驱动函到工程中
  • 在stm32g4xx_hal_conf.h中启动TIM模块
  • 在stm32g4xx_it.c中移植TIM2_IRQHandler中断服务函数
  • 在主函数中调用MX_TIM2_Init()定时器初始化函数和HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)启动定时器2捕获功能
  • HAL_TIM_IC_CaptureCallback回调函数里,获取CNT值,计算PWM的频率

前四步都是常规的移植步骤,我们前面已经做过很多次,下面重点讲解一下后面两步:定时器捕获启动函数和中断回调函数。

MX_TIM2_Init()初始化之后,我们在后面加上HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)启动定时器2捕获。这样只要有up输入进到PA15,我们的定时器就会产生一个中断,然后就可以在中断处理函数中处理了。

下面我们就可以用HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)回调函数了,这个回调函数我们可以在stm32g4xx_it.c中找到HAL_TIM_IRQHandler(),即TIM的中断处理函数,然后在里面就能找到了。

这是一个弱定义的函数,我们把它复制到main.c中编辑它的功能。编程思路之前已经讲过了,中断后开始计时,每1us计时一次作为CNT,回调函数中先要__HAL_TIM_GetCounter(&htim2)获取之前计时的CNT,再__HAL_TIM_SetCounter(&htim2,0)设置重新计时,然后计算得到频率,最后重新使能中断启动函数(否则只会中断一次)。

//pwm capture
u32 tim2_cnt1=0;
u32 f1=0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	tim2_cnt1 = __HAL_TIM_GetCounter(&htim2); //获取CNT
	__HAL_TIM_SetCounter(&htim2,0);//CNT置0,重新计数
	f1=1000000/tim2_cnt1;//计算频率
	HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);//重新启动中断
}

这样我们就能得到R40输出的方波频率f1了。我们可以把它显示在LCD上,也可以接在示波器上看一下波形,频率对不对。接示波器的时候一头接地,一头接J10。

三、测量双路频率

四、测量单路占空比

五、测量双路占空比

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

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

相关文章

微信小程序开发【从入门到精通】——页面事件

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

MS Edge浏览器坏了?网页播放视频的速度不对

前言 小白是MS Edge浏览器的重度用户。电脑上必须有的两个浏览器:Google Chrome和Microsoft Edge。 前段时间小白在使用MS Edge的时候出了问题:播放视频或者音频的时候总是被莫名其妙加速或者减速,类似于播放视频时候的0.5x或者2.0x。 当时…

舒适的劳保鞋,是工友不可或缺的保障!

劳保鞋,自诞生以来,就承担着保护工作人员足部免受于伤害的重任。在现代工业社会里,劳保鞋作为一种常见的劳保防护用品,被广泛用于各行各业。从实验室到车间再到工厂等,只要是作业现场大部分都会用到对应的劳保鞋。工作…

阿里云2核4G服务器租用价格30元、165元和199元1年

阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

国内好用的chatGPT和AI绘图工具

分享一个比较好用的AI 分享一个比较好用的AI,只是需要开通会员,目前官网的价格是:298,开通之后可以使用chatgpt4、AI绘画、图片融合等等!不开通的话是可以免费使用15次的,下面是一些介绍图片!链…

使用Leaflet.rotatedMaker进行航班飞行航向模拟的实践

目录 前言 一、Leaflet的不足 1、方向插件 2、方向控制脚本说明 二、实时航向可视化实现 1、创建主体框架 2、飞机展示 3、位置和方位模拟 三、成果及分析 1、成果展示 2、方向绑定解读 总结 前言 众所周知,物体在空间中的运动(比如飞行、跑步…

基于微信小程序的考研交流平台的设计与实现

3 系统需求分析与设计 3.1 系统需求分析 本系统基于微信小程序,实现教学互动软件系统是本文的目标,主要涉及到的系统角色分为学生、教师、管理员。系统角色主要有管理员,普通用户两种角色构成。 普通用户有如下几个核心需求: …

JUC:synchronized优化——锁的升级过程(偏向锁->轻量级锁->重量级锁)以及内部实现原理

文章目录 锁的类型轻量级锁重量级锁自旋优化偏向锁偏向锁的细节偏向锁的撤销批量重偏向批量撤销锁消除 锁的类型 重量级锁、轻量级锁、偏向锁。 加锁过程:偏向->轻量级->重量级 轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多线程要加锁&am…

Django详细教程(一)

文章目录 一、安装Django二、创建项目1.终端创建项目2.Pycharm创建项目(专业版才可以)3.默认文件介绍 三、创建app1.app介绍2.默认文件介绍 四、快速上手1.写一个网页步骤1:注册app 【settings.py】步骤2:编写URL和视图函数对应关…

sort函数对vector一维或者二维数组排序

目录 sort对一维数组排序 1、sort对一位数组升序排序 2、sort对一维数组降序排序 sort对二维数组排序 1、sort默认对横坐标进行升序排序,如下: 2、使用自定义排序对纵坐标进行升序排序: 额外知识: 对横坐标进行降序排列,当…

【全栈小5】我的创作纪念日

目录 前言机缘收获粉丝和原创个人成就六边形战士 回顾文章原代码代码优化 憧憬 前言 全栈小5 ,有幸再次遇见你: 还记得 2019 年 03 月 29 日吗? 你撰写了第 1 篇技术博客: 《前端 - 仿动态效果 - 展开信息图标》 在这平凡的一天&…

CSS(三)---【盒子模型、边框、外边距合并】

零.前言 本篇主要介绍CSS中最重要的一种概念模型:“盒子模型”。 关于CSS的更多内容,可以查看作者之前的文章: CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属性使用】-CSDN博客 一.盒子模…

基于AI网关的光伏电站在线监测方案

光伏电站作为利用太阳能的重要方式,凭借其环保、高效和可持续性的优势,在全球范围内得到广泛应用。然而,光伏电站的运营和维护也面临着诸多难点和痛点。在这一背景下,AI智能网关的应用为光伏电站的运营和维护带来了新的突破。 光伏…

天梯算法Day3整理

浮点数解析 炸鱼题掠过 冲突值 题面 解析 方法一 —— 并查集 按照边值排序,然后按边值从大到小遍历,通过并查集判断能否将所有点无冲突地归于两个集合。在判断时,若有两个点不得不产生冲突,则输出这两个点之间的边值并结束。…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan/macvtap 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式,macvlan模式、ipvlan模式等,下面介绍交换机端及服务器端配置示例。 前置要求: 准备一台物理交换机,以 H3C S5130 三层交换机为例准备一台物理服务器&…

变分信息瓶颈

变分信息瓶颈和互信息的定义 1 变分信息瓶颈 定义:变分信息瓶颈(Variational Information Bottleneck)是一种用于学习数据表示的方法,它旨在通过最小化输入和表示之间的互信息来实现数据的压缩和表示学习。这种方法通常用于无监…

OpenHarmony:全流程讲解如何编写ADC平台驱动以及应用程序

ADC(Analog to Digital Converter),即模拟-数字转换器,可将模拟信号转换成对应的数字信号,便于存储与计算等操作。除电源线和地线之外,ADC只需要1根线与被测量的设备进行连接。 一、案例简介 该程序是基于…

Java基础语法(三)| 循环语句

前言 Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~ 1. if语句 1.1 格式一 if (关系表达式) …

探讨企业邮箱安全问题:必须关注的四个关键要点

近年来,虽然出现了微信、企微等沟通方式,但电子邮件无疑仍然是公司对内对外沟通的首选方式。根据Statista的研究,每天大约有3330亿封电子邮件被发送和接收,预计这一数字在未来几年还会增长。然而,邮件诈骗的问题也一直…

SiameseRPN原理详解(个人学习笔记)

参考资源: 视觉目标跟踪SiamRPNSiameseRPN详解CVPR2018视觉目标跟踪之 SiameseRPN 目录) 1. 模型架构1.1 Siamese Network1.2 RPN 2. 模型训练2.1 损失函数2.2 端到端训练2.3 正负样本选择 3. 跟踪阶段总结 SiamRPN是在SiamFC的基础上进行改进而得到的一…