STM32F429--STM32的PWM占空比产生与测量

发布者:RainbowPromise最新更新时间:2019-08-21 来源: eefocus关键字:STM32F429  STM32  PWM占空比 手机看文章 扫描二维码
随时随地手机看文章

一、PWM波形的产生;


使用定时器2 (TIM2)PA5端口输出。

通过配置


TIM_TimeBaseStructure.TIM_Period= 1000 - 1;


TIM_TimeBaseStructure.TIM_Prescaler= 9000 - 1;


TIM_OCInitStructure.TIM_Pulse= 300 ;


三个参数,TIM_Prescaler控制计数频率,此处9000即计数频率为90M/9000 = 10Khz,即计数一次的时间为0.1ms,TIM_Period控制PWM波周期时间,此处1000即PWM波的周期为1000*0.1ms = 100ms;TIM_Pulse控制有效电平时间,此处300即有效电平时间为300*0.1ms=30ms;调用初始化程序,上点即产生PWM波信号。


二、PWM波占空比的测量:


捕获输入通过定时器5(TIM5)通道二PA1端口;


初始化函数同课堂使用的函数,此处略写。


下面详写捕获中断服务函数。

定义五个变量


TIM5CH1_CAPTURE_STA 存放输入捕获状态     


TIM5CH1_CAPTURE_VAL存放输入捕获值(TIM2/TIM5是32位)


CATCH2 存放第一次触发中断到第二次触发中断的时间;


CATCH3 存放第二次触发中断到第三次触发中断的时间;


okflag 捕获结束标志位;


捕获原理:通过获取第一次触发中断到第二次触发中断的时间,和第二次到第三次触发的时间,两次时间求和即为总时间,即周期,然后用     (前文产生PWM波使用的是高电平有效);


一个成功的捕获周期顺序如上图标识1-2-3所示:


过程1:原本初始化之后,该中断为下降沿触发,所以当检测到有下降沿时进入到该中断服务函数,此时


if(TIM5CH1_CAPTURE_STA & 0x80)


if(TIM5CH1_CAPTURE_STA&0X40)


以上两个if均不成立,所以程序直接进入最后一个else中,先进行清空操作,然后把STA标志位次高位置1,表示捕获到了第一次,捕获了一个下降沿,初始化定时器5(TIM5),然后开启定时器,将中断捕获触发信号改为上升沿触发,下一次为上升沿触发;


过程2:第二次进入该中断服务函数时


if(TIM5CH1_CAPTURE_STA&0X40)


成立,进入第二个阶段,将标志位STA最高位置1,表示捕获完第二次,将当前时间存入全局变量:CATCH2中,初始化定时器5(TIM5),然后开启定时器,将中断捕获触发信号改为下降沿触发,下一次为下降沿触发。


过程3:第三次进入该中断服务函数时:


if(TIM5CH1_CAPTURE_STA & 0x80)


成立,进入第三阶段,获取当前定时器时间,放入全局变量CATCH3,即第二次捕获到第三次捕获时间间隔,即高电平时间,将全局标志位okflag置1,通知main函数接下来可以打印到串口了。

main 函数中新建变量Comp存放占空比,total存放CATCH2+CATCH3即总时间,周期。用高电平时间CATCH3/total即占空比。


三、运行结果:


测出占空比为29%,与实际值在误差允许范围内近似相等,程序正确。

关键字:STM32F429  STM32  PWM占空比 引用地址:STM32F429--STM32的PWM占空比产生与测量

上一篇:STM32F103输出可变频率的PWM信号
下一篇:stm32 pwm频率与周期计算

推荐阅读最新更新时间:2024-11-08 01:56

stm32 encoder
首先打开timer2的encoder模式: 配置系统时钟。 配置具体定时器的参数: 选择的encoderMode是 TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。也就是第一个参数,分频值设为3,实际上是3+1=4分频。 还有个地方需要解释一下,我刚开始的时候就是把这里的设置没搞清楚,看Polarity参数设置的是Rising Edge。这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。 Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。
[单片机]
<font color='red'>stm32</font> encoder
STM32 USB复位机制、挂起机制及其唤醒机制详解
1 STM32 USB复位机制 主机可以对USB设备进行复位,主要是主机在和设备通讯之前会发送Reset信号把设备设置到默认的未配置状态,即主机拉低两根信号线(SE0状态)并保持10ms。当STM32 USB设备检测到主机的复位信号之后,如果复位中断使能,则会进入复位中断处理函数。 STM32 USB设备也可以对自身进行复位,置位控制寄存器的FRES对USB模块强制复位,此时USB模块将一直保持在复位状态下直到软件清除此位。如果USB复位中断被使能,将产生一个复位中断。USB设备在上电后首先会强制对自己进行复位,让自己处于未配置状态。 2 STM32 USB挂起机制 USB主机以3毫秒内不发送任何信号标志进入挂起状态(3m
[单片机]
<font color='red'>STM32</font> USB复位机制、挂起机制及其唤醒机制详解
STM32F429 >> 4. 使用固件库点亮LED
本工程板级支持包文件适用于野火stm32f429 开发板。 在这一节的当中,最核心的内容就两点: 学会创建自己的项目; 学会创建板级支持包; STARTUP :放置启动文件 STM32F4xx_StdPeriph_Driver 和CMSIS :放置库文件,不需要改动 DOC :放置说明文件 USER :放置用户创建或要进行改动的文件 bsp_led.h /** ****************************************************************************** * @file bsp_led.h * @author Waao * @version V1.0
[单片机]
<font color='red'>STM32F429</font> >> 4. 使用固件库点亮LED
STM32中断与嵌套NVIC快速入门
简介:STM32 中断与嵌套NVIC 快速入门 //==================================================== // STM32 中断与嵌套NVIC 快速入门 // netjob 2008-8-1 //==================================================== STM32中断与嵌套NVIC快速入门 我也是靠看这本书才弄懂的: Cortex-M3 权威指南 Joseph Yiu 著 宋岩 译 其实很简单。 //CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的 IRQ CHA
[单片机]
STM32的这些经典功能,你真的掌握了吗?
首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。 创客学院整理如下: AMBA:先进单片机总线架构 ADK:AMBA设计c9200446619921FFCa4b252220c1fe2a AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线ARMARM:ARM架构参考手册 ASIC:行业领域专用集成电路ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP:数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿
[单片机]
<font color='red'>STM32</font>的这些经典功能,你真的掌握了吗?
STM32学习笔记——使用函数库编程控制GPIO口输出
看了网上许多人的代码以及各类开发板所带的例程,大多数使用的都是官方发布的函数库来编程,通过查询后发现,使用函数库来编程可以简化开发过程,并不需要追溯到各个寄存器,通过查看库手册,新手也可以快速应用STM32,因此,决定先从函数库开始入门! 1. 建立带函数库的IAR项目工程 先从网上下载3.5版(据说3.0版以后的固件库才逐渐稳定)stm32固件库(stm32f10x_stdperiph_lib)。由于与固件库版本兼容问题,重新下载安装了IAR6.30版。 1.1 创建项目文件夹 project ; 1.2 解压 stm32f10x_stdperiph_lib.rar 后, 将...stm32f10x_stdperi
[单片机]
<font color='red'>STM32</font>学习笔记——使用函数库编程控制GPIO口输出
STM32定时器的输入滤波机制
STM32的定时器输入通道都有一个滤波单元,分别位于每个输入通路上(下图中的黄色框)和外部触发输入通路上(下图中的兰色框),它们的作用是滤除输入信号上的高频干扰。 具体操作原理如下: 在TIMx_CR1中的CKD 可以由用户设置对输入信号的采样频率基准,有三种选择: 1)采样频率基准fDTS=定时器输入频率fCK_INT 2)采样频率基准fDTS=定时器输入频率fCK_INT/2 3)采样频率基准fDTS=定时器输入频率fCK_INT/4 然后使用上述频率作为基准对输入信号进行采样,当连续采样到N次个有效电平时,认为一次有效的输入电平。 实际的采样频率和采样次数可以由用户程序根据需要选择;外部触发输入通道的滤波参数
[单片机]
<font color='red'>STM32</font>定时器的输入滤波机制
stm32 boot0 boot1的启动方式
STM32 三种启动模式对应的存储介质君是芯片内置的,它们是: 1.用户闪存 =芯片内置的Flash 2.SRAM=芯片内置的RAM区,就是内存了。 3.系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段bootloader,就是同事的ISP升级程序,这个区域的内容在芯片出现后没偶人能够修改或拆除,即它是一个ROM; 在每个STM32 的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时电平状态决定了芯片复位后从哪个区域开始执行程序,BOOT1=X BOOT0=0 从用户闪存(flash)启动,这时正常模式 较多情况下使用这种模式BOOT1=1 BOOT0=1 从内置SRAM(内存)启动,这种模
[单片机]
<font color='red'>stm32</font> boot0 boot1的启动方式
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved