STM32的PWM的频率和占空比设定

发布者:SerendipityJoy最新更新时间:2019-05-11 来源: eefocus关键字:STM32  PWM  频率  占空比 手机看文章 扫描二维码
随时随地手机看文章

在TEC控温项目中用到PWM的占空比来控制温度,这就需要占空比是连续可以变化的。


最开始也是到处找资料,找现成的例程,发现大家各说风云,最后还是没有建设性的结果。所以又请教了官方的固件库“STM32最新固件库v3.5”(存到百度网盘->开发应用->stm32目录下了)呵呵,有现成的demo。开始好像是懂了也没有过多的去研究,也没有备份,就没去管他了。后来具体用的时候发现没有想象的那么简单,又倒腾了好久才搞清楚,问了不走弯路。这次决定用博客来记录一下现在的成果。配置文件如下:


void TIME_ini(uint16_t Channel4Pulseset)

{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

  TIM_OCInitTypeDef  TIM_OCInitStructure;

  uint16_t TimerPeriod ;

  uint16_t Channel4Pulse = 0;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_AFIO, ENABLE);


  /* Time Base configuration */

  TIM_TimeBaseStructure.TIM_Prescaler = 0;//不分频,PWM的频率为72M/((TIM_Prescaler +1)*TIM_Period )

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseStructure.TIM_Period = 0xfff;

  TIM_TimeBaseStructure.TIM_ClockDivision = 0;

  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;


  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);


  /* Channel  4 Configuration in PWM mode */

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;


  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;

  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;


  TIM_OCInitStructure.TIM_Pulse = Channel4Pulseset;               //占空比=TIM_Pulse /TIM_Period                        

  TIM_OC4Init(TIM1, &TIM_OCInitStructure);


  TIM_Cmd(TIM1, ENABLE);

  TIM_CtrlPWMOutputs(TIM1, ENABLE);

}


定时器1在不分频的情况下始终频率是72M,所以设置PWM的频率=72M/((TIM_Prescaler +1)*TIM_Period );


占空比=TIM_Pulse /TIM_Period     


关键字:STM32  PWM  频率  占空比 引用地址:STM32的PWM的频率和占空比设定

上一篇:stm32程序下载不进去
下一篇:在STM32上创建链表并实现LCD滚动显示串口消息

推荐阅读最新更新时间:2024-11-10 03:58

STM32的IAP下载与设置
首先修改IAP程序: 由于官方的例子中是基于官方的开发板的,其中使用的触发条件为上电检测一个按键。所以需要更改启动设置。去官方下载IAP程序 http://www.stmicroelectronics.com.cn/stonline/mcu/STM32_AN.htm 第一步:打开官方的STM32的IAP程序,根据软件选择工程STM3210B-EVAL,我用得是MDK。 第二步:我们需要把这个触发条件修改为自己开发板上的按键 SW3,需要做如下修改。 打开 platform_config.h 文件,做如下修改: //#if !defined (USE_STM3210B_EVAL) && !defin
[单片机]
STM32在C文件中使用C++文件时,编译错误Error
最近,在做ARM开发时遇到问题,发现C文件调用C++文件时,编译出现如下错误:Error:identifier class is undefined 解决办法如下: 1、打开工程设置页面; 2、选择 C/C++ 选项卡,找到下面的 Misc Controls (下方倒数第二行); 3、加入 --cpp11 (没有引号),如果这一栏有其他东西就在最后面加上 ,--cpp11 (去掉引号); 4、确认。 问题解决
[单片机]
STM32 | 分享几个开源的测试框架
这是一篇测试相关的笔记。我们软件开发最终都离不开测试的,可以通过测试来发现很多问题。在这之前先扯谈一波: 在这给还没找工作的朋友提个醒,能找开发的职位就别找测试的职位,除非你真的很喜欢测试。亲身经历,做测试很不好受。测试其实有两类,一种是自己去测自己测的东西,另一种是去测别人做的东西。如果是第一种,我倒是很愿意做,因为我们本质上还是开发工程师,大概80%的工作时间在做开发,20%的工作时间在测自己开发的东西。这个测试的时间值得花,可以通过测试来发现我们在开发过程中没有注意到的点。如果是第二种,我们本质上就是测试工程师了,大概80%的时间在测别人的东西,20%的时间在想着怎么测别人的东西。如果是这一种的话,那我们就只能当别人的配
[单片机]
<font color='red'>STM32</font> | 分享几个开源的测试框架
STM32开发 -- Keil使用(2)
STM32开发 – Keil使用(1) 用了很长的篇幅,主要介绍了keil的菜单栏、工具栏、工程配置等信息。但是很多时候拿到的工程示例,这些可是都配好了的。接下来开始讲解一下,工程调试过程中的一些技巧。 一、编译、调试 1、编译 调试之前先要编译 编译当前文件(单个) Ctrl + F7 编译目标文件(修改过的) F7 编译所有目标文件(重新编译) 无 编译多个工程文件(多工程) 无 停止编译 无 下载软件 F8 2、调试 打开调试 打开/关闭调试 Ctrl + F5 插入断点 F9 失能单个断点 Ctrl + F9 失能所有断点 无 取消所有断点 Ctrl + Shift + F9 二、调试工具栏 打开调试,
[单片机]
<font color='red'>STM32</font>开发 -- Keil使用(2)
基于STM32的BLE智能灯泡
本文将教您如何使用 STM32 制作启用 BLE 的智能灯泡。 家庭自动化涉及自动化家庭环境设备。为此,我们开发了一种易于安装的智能灯泡,并且可以通过网络浏览器或智能手机应用程序控制连接的设备。该项目的目的是使用网络浏览器或智能手机控制不同的家用电器。 一、介绍 该项目展示了一种使用 BleuIO Dongle 打开和关闭通过 5V 继电器连接到 STM32 Nucleo-144 的灯泡的简单方法。 您将需要两个加密狗,一个连接到 Nucleo 板,一个连接到计算机,运行 Web 脚本。 当 BleuIO Dongle 连接到 Nucleo 板的 USB 端口时,STM32 会识别它并直接开始广告。这允许另一个加密狗连接到它。
[单片机]
基于<font color='red'>STM32</font>的BLE智能灯泡
msp432快速入门第九节之pwm输出
(一)定时器TA输出PWM介绍 首先查看下TI的usermanual,支持PWM输出的定时器只有TAx定时器,Timer32是不支持直接PWM输出,所以采用TA输出PWM,首先查看一下他的寄存器和说明: 这里指出使用输出比较来输出PWM波,主要需要注意的就是PWM的频率配置,最大比较计数值,连续模式使能即可 (二)配置PWM输出 在这里我们使用连续模式进行输出比较来输出PWM波,参照TI的driver lib进行直接配置,使用TA0输出一路PWM信号驱动5V舵机MG996R,输出引脚为P2.4,注意SMCLK总线频率是已经配置好为12M,配置PWM的周期为20ms,以一个0.5~2.5ms的高电平方波来控制舵机角度:
[单片机]
msp432快速入门第九节之<font color='red'>pwm</font>输出
STM32-一文搞懂通用定时器捕获/比较通道
捕获和比较 捕获 什么是捕获 所谓捕获就是通过检测捕获通道上的边沿信号。在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCR)里面,完成一次捕获。 捕获的应用 STM32支持一下捕获模式: 输入捕获模式 PWM输入模式 输入捕获模式可以用来测量脉冲宽度或者测量频率。下图是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中 t1~t2 时间,就是需要测量的高电平时间。 测量方法如下:首先设置定时器通道 x 为上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到
[单片机]
STM32-一文搞懂通用定时器捕获/比较通道
发现STM32的SPI2有问题(invalid)
最近需要用到SPI1和SPI2协同工作,想弄个2位的SPI通信: 硬件的接线如下: SPI1.SCK - DEV.SCK SPI1.SCK - SPI2.SCK SPI1.MOSI - DEV.MOSI SPI1.MISO - DEV.MISO SPI2.MISO - DEV.MOSI SPI2.MOSI - DEV.MISO 将SPI1设置为Master方式,将SPI2设置为Slave。 设置为CPOL=0,CPHA=0(就是不传输的时候时钟是低电平,上升沿采样,下降沿更新数据)。 具体的配置就不贴了,在stm32fwlib的例子里面有。 注意:官方和网上能用的配置都是SPI1是Slave、SPI2为Master!接下来会说。
[单片机]
发现<font color='red'>STM32</font>的SPI2有问题(invalid)
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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