datasheet

stm32中pwm频率和占空比设置

2019-04-09来源: eefocus关键字:stm32  pwm频率  占空比设置

对于72M频率来说,计算pwm频率是:


频率:


//Fpwm = 72M / ((arr+1)*(psc+1))(单位:Hz)

占空比:


//duty circle = TIM3->CCR1 / arr(单位:%)



这样每次改变频率和占空比都要手动算一下,非常不方便。


下面进行改进:


//PWM输出初始化

//arr:自动重装值

//psc:时钟预分频数

 

void set_pwm1(u32 arr,u16 psc)

{

double T_ARR,DPwm_CCR2;


T_ARR=(double)72000000/arr; 

DPwm_CCR2=(double)(T_ARR * psc)/10000;


T_ARR=T_ARR+0.5;//四舍五入算法

DPwm_CCR2=DPwm_CCR2+0.5;//四舍五入算法


// PWM_Config_step((u16)T_ARR, (u16)DPwm_CCR2, 1);

PWM_Period = (u16)T_ARR;


TIM1->CCR1 =DPwm_CCR2;

 

}


使用:set_pwm1(20000,1000); 这样就是20KHZ,10%

使用:set_pwm1(80000,5000); 这样就是80KHZ,50%


关键字:stm32  pwm频率  占空比设置

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2019/ic-news040943725.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F103 超声波 串口输出数据
下一篇:STM32 TIM1 F1 四通道完全重映射PWM 配置

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

出货超40亿颗,STM32前景光明

意法半导体(以下简称ST)在MCU领域的地位是毋庸置疑的。 根据IHS 的数据统计显示,2018年,ST MCU(不含汽车和安全MCU)的全球出货量位居全球第二。其通用加汽车MCU在中国的出货量更是高居第一,领先于排名第二的的NXP。  STM 32 过去九年的的出货量 尤其是其STM32 MCU的出货,更是表现惊人。据IHS统计,过去四年,STM32的平均年复合增长率高达30%,去年公司的STM32出货量更是达到了12亿颗。统计2007年到现在的数据,公司的STM32出货量更是超过40亿片,服务的客户也超过四万家。能获得这样的成绩主要得益于公司过去多年来在产品和技术上的投入。 
发表于 2019-04-29
出货超40亿颗,STM32前景光明

关于stm32硬件spi的miso口配置

在我们刚使用spi时,对于spi的io口配置可能会有一些疑惑吧,miso明明是一个输入口却配置成了复用推挽输出,是不是会有一点疑惑呢? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     // 复用的推挽输出MISO
发表于 2019-04-28

SPI造成错误位移的解决方法

情况介绍:温湿度传感器给STM32发送时钟信号和数据信号,STM32不返回任何数据,温湿度传感器的CS端由stm32控制,但是stm32的CS端由自己控制。也就是说温湿度传感器和STM32都是从机。出现的情况是会造成莫名其妙的位移,比如在正确数据前面出现一个1或者0。经过排查发现,使用温湿度传感器造成位移的原因是因为SPI是个板载传输方式,如果外接了数据线其实SPI很脆弱的。我曾经尝试将时钟线拉出来在桌子上随便划都能让STM32都能接受到时钟信号,从而接受到数据。所以很容易多接受到一个数据然后造成位移。要修复这个位移需要重置接受counter,清空DR寄存器。一般标准的SPI传输是不需要关注CS端的,因为复用功能里会自动安排CS端
发表于 2019-04-28

STM32模拟SPI接口程序

做开发的时候经常需要用到模拟spi接口,这种写法不错的,网上很多类似的,我也拿来学习了。#define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10)#define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10)#define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13)#define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13)#define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)  unsigned char SPI_
发表于 2019-04-28

STM32 学习笔记--SPI通信配置

SPI时序SPI时序图如下:STM32做为主机设计SPI时序一般选用CPOL=1/CPHA=1;SPI通信配置1、时钟使能。GPIO时钟使能RCC->APB2ENR,SPI时钟使能RCC->APB2ENR设置。 (为什么还要连接GPIO时钟,参见STM32参考手册8.1.4节。手册上这么说的:对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。)2、配置GPIO工作模式。配置GPIO片选,由软件管理(即自定义引脚),推挽输出,上拉; 配置SPI引脚SCK、MOSI、MISO所用到的引脚为复用功能;GPIOX->CR1 GPIOX->ODR;3、SPI设置工作模式。通过配置
发表于 2019-04-28
STM32 学习笔记--SPI通信配置

STM32 USART 接收任意长度字符

近段时间学习到 STM32 USART 部分,基本上在接收数据的时候都是采用定长,所以一直想实现接收任意长度的字符串。这里的任意长度不是指的无限长,而是在自己定义的缓冲区范围之类。比如说缓冲区的大小是 1024 Byte,那么就能接收不大于 1024 个字符串。当时有两个思路:1、使用结尾标志,如 "rn" 什么的2、定时判断接收数据的长度,如果在规定的时间内长度没有发生变化,证明已经接收完了任意长度的字符因为思路 1 比较好实现,而且网上也有很多例程,所以着重讲思路 2宏定义:usart.h 文件
发表于 2019-04-28

小广播

何立民专栏

单片机及嵌入式宝典

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

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