文章目录

  • 前言
  • 1、PWM输入模式
  • 2、硬件设计
  • 3、软件设计

前言

  STM32的定时器输入捕获模式可以通过更改输入捕获极性实现PWM的输入捕获,但实际上STM32也包含有非常方便的PWM输入捕获模式用以测量矩形波的频率和占空比

  下载工程文件:
  https://gitee.com/Joseph_Cooper/blue-bridge-embedded


1、PWM输入模式

▲PWM输入模式于STM32官方数据手册

  简单来说就是在输入捕获的基础上对同一个端口使用两个IC进行捕获分别设置为上升沿有效和下降沿有效,当捕获开始时清空计数器CNT的值,在下降沿和第二次上升沿到来时分别读取两个比较寄存器的数据用以测量脉冲的频率和占空比。

▲通用定时器框图于STM32官方数据手册

2、硬件设计

  本次使用到了CT117_EXA上的PA1PLUS1端口,可以实现调节RP3改变矩形波的输出频率。

▲脉冲发生于CT117E_EXA

3、软件设计

#include "Headfile.h"__IO uint16_t IC2Value = 0;
__IO uint16_t DutyCycle = 0;
__IO uint32_t Frequency = 0;void RCC_Configuration(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}void GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);
}void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}void TIM2_CC2Config()
{TIM_ICInitTypeDef  TIM_ICInitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;RCC_Configuration();NVIC_Configuration();GPIO_Configuration();/* TIM2 configuration: PWM Input mode ------------------------The external signal is connected to TIM3 CH2 pin (PA.01), The Rising edge is used as active edge,The TIM2 CCR2 is used to compute the frequency value The TIM2 CCR1 is used to compute the duty cycle value------------------------------------------------------------ */TIM_TimeBaseStructure.TIM_Period = 65535;TIM_TimeBaseStructure.TIM_Prescaler = 72;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStructure.TIM_ICFilter = 0x0;TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);//选择输入捕获的触发信号TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);// PWM输入模式时,从模式须工作在复位模式,当捕获开始时,计数器CNT被复位清零/* Select the slave Mode: Reset Mode */TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);/* Enable the Master/Slave Mode */TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);/* TIM enable counter */TIM_Cmd(TIM2, ENABLE);/* Enable the CC2 Interrupt Request */TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE);TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);}void TIM2_IRQHandler(void)
{/* Clear TIM3 Capture compare interrupt pending bit */TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);/* Get the Input Capture value */IC2Value = TIM_GetCapture2(TIM2);if (IC2Value != 0){/* Duty cycle computation */DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;/* Frequency computation */Frequency = (SystemCoreClock/72) / IC2Value;}else{DutyCycle = 0;Frequency = 0;}
}

【蓝桥杯嵌入式】【STM32】13_PWM输入捕获模式相关推荐

  1. 蓝桥杯嵌入式STM32 G431 HAL库开发速成指南(1)LED

    本教程适用于报名参加蓝桥杯嵌入式用新开发板(G431)且想要快速开发的小白,不具体讲解复杂的原理,只讲Cubemx初始化配置以及在KEIL里面使用相应的库函数功能对外设进行编程. CUBEMX配置流程 ...

  2. stm32入门学什么板子_“蓝桥杯”嵌入式stm32开发入门(1)概述

    声明:笔者绝不是给"蓝桥杯"打广告,而是笔者曾经参加过蓝桥杯嵌入式设计与开发比赛,想借此机会总结并分享自己的学习中的点点滴滴. 此系列教程将以蓝桥杯官方指定的开发板和接口板来深入浅 ...

  3. 【Pre蓝桥杯嵌入式】【STM32】学习索引

    写在前面     0.专栏链接     1.Unkown device     2.移植LCD程序+建立工程+LCD程序分析     3.如何直接使用LCD例程来作为赛场使用的工程 学习目录      ...

  4. 蓝桥杯嵌入式1--滴答定时器,输入输出模式,LED,按键

    蓝桥杯嵌入式1--滴答定时器,输入输出模式,LED,按键 滴答定时器 输入输出模式 LED 按键 滴答定时器 滴答定时器是放在stm32内核中的一个定时器,用户不可以随便操作滴答定时器的寄存器,滴答定 ...

  5. STM32输入捕获模式设置并用DMA接收数据

    参考: STM32的PWM输入模式设置并用DMA接收数据 Input capture mode The input stage samples the corresponding TIx input ...

  6. 【蓝桥杯嵌入式】【STM32】7_RTC之实时时间显示和硬件闹钟设置

    文章目录 1.RTC的三个可用时钟源 2.RTC框图 3.写代码前需要知道的一些标志位 4.配置流程 5.源代码 6.关于设置闹钟这件事  6.1.配置流程  6.2.实验源代码   下载工程文件: ...

  7. 国信长天蓝桥杯嵌入式类——stm32——使用keil4建立工程文件过程

    蓝桥杯嵌入式----使用keil4建立工程文件过程 目录 蓝桥杯嵌入式----使用keil4建立工程文件过程 一.完成文件建立 (一).先建立名为test工程文件夹,如图.并建立如下几个文件夹 (二) ...

  8. 蓝桥杯嵌入式类比赛经验分享

    第八届蓝桥杯大赛(嵌入式组) 蓝桥杯的嵌入式组是Stm32rbt6单片机的编程比赛,我想对于学习电子信息工程专业的同学这不是一个陌生的名词,如果你是电信专业的大四同学却没有听说过msp430或者stm ...

  9. 蓝桥杯嵌入式——题目总结及文章汇总

    蓝桥杯嵌入式--题目总结及文章汇总 一.前言 笔者也是最近准备参加第十二届蓝桥杯嵌入式的选手,希望能够和大家一起学习.我也将我自己学习过程中,学习stm32遇到的一些问题,以及刷题的代码等都进行了整理 ...

最新文章

  1. 形状相似的物品_我的世界:MC早期物品和现在的对比,差别很大
  2. 借助传感器用计算机测速度实验题,专家分析2015年高考命题趋势 内容设计将再创新...
  3. 透过现象看本质,如何设计一款病毒式裂变产品?
  4. 图文详解Java环境变量配置方法
  5. 允许指定IP访问远程桌面
  6. php设计模式的作用是什么意思,php设计模式工厂模式有什么作用?
  7. Python学习day01_变量字符串与随机数
  8. kafka消息确认机制
  9. C++ 拷贝构造函数
  10. android中上拉下滑布局,3年以上勿进!最简单的Android自定义ListView下拉刷新与上拉加载,代码直接拿去用~...
  11. linux unix域socket_从文件描述符到Socket
  12. 【Webcam设计】利用底层V4L2+OPENCV进行图像处理以及移植策略
  13. php directory lister,PHP目录展示工具DirectoryLister
  14. 计算机视觉论文-2021-03-10
  15. Windwos tar 命令详解
  16. Unity3D自由摄像头视角旋转,平移,缩放
  17. QPS、TPS、并发用户数、吞吐量
  18. C#爬虫爬取京东自营笔记本
  19. 网易2018校园招聘编程题真题集合2相反数
  20. VB前传,从教学到游戏,再到系统,似乎每步都是精心设计

热门文章

  1. matplotlib 子图超过4个_Python数据分析:用Matplotlib可视化创建套图
  2. 组件是全局怎么修改样式_用一个落地项目,帮你掌握Sketch组件的制作思路
  3. 鸿蒙卡片-物联网DTU污水液位计卡片
  4. django配置mysql,并解决NameError: name ‘_mysql‘ is not defined报错
  5. Python为数据添加拉普拉斯噪声Laplace noise
  6. houghcircle函数_Hough Circle 变换
  7. java多线程命名,命名线程和当前线程
  8. 函数式接口 lambda表达式 方法引用
  9. bzoj 4260 REBXOR —— Trie树
  10. 【HBase】学习笔记