简介
在使用STM32的PWM做为调制信号时,遇到开关调制信号关闭后其信号不确定的问题,影响信号的调制,收集了些资料在这归纳整理。
方法
当IO设置成PWM模式以后GPIO_ResetBits等设置语句就不管用了,如果不考虑时间点,调用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);定会产生关闭PWM后端口的电平不确定的情况。有2种办法可以解决:
1、如果使用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);应该在需要关闭时,先开放更新中断,然后在更新中断中调用其中一个函数,这样才能保证关闭的动作与PWM输出周期同步;
2、如果不使用中断,可以在关闭PWM输出后,把对应的引脚配置为推挽输出或开路输出,然后再使用GPIO_ResetBits语句。
代码片
//初始化配置
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM模式1
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //当定时器计数值小于CCR1_Val时为高电平 (对应关闭PWM后端口的电平值)
//PWM1 Mode configuration: Channel2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;//跳变值
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
//在禁止定时器前,用软件强制定时器更新,可初始化电平
TIM_GenerateEvent(TIMx,TIM_EventSource_Update);
TIM_Cmd(TIMx,DISABLE);
实测OK。
关键字:STM32 PWM 调制信号 端口电平
引用地址:
STM32 PWM调制信号关闭后端口电平不确定处理
推荐阅读最新更新时间:2024-03-16 16:19
电感型升压DC/DC转换器知识讲解
什么是电感型升压DC/DC转换器? 如图1所示为简化的电感型DC-DC转换器电路,闭合开关会引起通过电感的电流增加。打开开关会促使电流通过二极管流向输出电容。因储存来自电感的电流,多个开关周期以后输出电容的电压升高,结果输出电压高于输入电压。 决定电感型升压的DC-DC转换器输出电压的因素是什么? 在图2所示的实际电路中,带集成功率MOSFET的IC代替了机械开关,MOSFET的开、关由脉宽调制(PWM)电路控制。输出电压始终由PWM占空比决定,占空比为50%时,输出电压为输入电压的两倍。将电压提高一倍会使输入电流大小达到输出电流的两倍,对实际的有损耗电路,输入电流还要稍高。 电感值如何影响电感型升压转
[电源管理]
JLINK 与STM32的SWD连接接线方式
有些开发板只能用Jlink烧写程序,但是没有提供标准Jlink接口,我们可以使用下面的办法,烧写:
[单片机]
STM32系列微控制器开发工具与应用——keil
STM32微处理器基于ARM核,所以很多基于ARM嵌入式开发环境都可用于STM32开发平台。开发工具都可用于STM32开发。选择合适的开发环境可以加快开发进度,节省开发成本。本章将先对STM32常用的开发工具Keil MDK和IAR EWARM进行简单介绍,然后结合STM32_SK仿真评估板和STM32F103C的开发板讲解STM32片上资源使用,最后给出一个基于STM32的数据采集器的应用实例。 5.1 Keil MDK介绍 Keil是德国知名软件公司Keil(现已并入ARM 公司)开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的
[单片机]
嵌入式学习⑤——STM32嵌入式应用系统设计
前言 这次嵌入式学习的主要内容为可视化的代码跟踪调试、简单的hex文件编译并在Proteus上仿真运行、最后使用Altium Designer 进行原理图和PCB图的设计,都是我们学习STM32的工具。 一、基于跨平台多类型代码编辑器VScode 1.VScode的安装 从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64 使用wget 下载地址 进行下载 安装:dpkg -i 安装包 安装成功后,执行code命令打开sacccaas界面 安装过程中由于安装包依赖关系而报错,解决方案如下: deb安装出现依赖问题可以执行
[单片机]
基于单片机与CPLD的步进电机PWM驱动技术
步进电动机是一种将数字信号转换为位移(或直线位移)的机电执行元件,每当输入一个脉冲时,转轴便转过一个固定的机械角度,他具有快速起停、精确步进、没有积累误差且能直接接收数字信号的特点,在数字控制系统中得到了广泛的应用。步进电机的运动性能和他的驱动器有密切的关系,驱动器的性能的优劣直接影响到步进电机运行的好坏。细分驱动方式可以减小步进电机的步矩角,提高分辨率,使电机运行更加平稳均匀,可以减小或消除低频振动。利用恒流和细分驱动技术可以大大提高步进电机的步矩分辨率,减小转矩波动,避免低频共振及降低运行噪声。通常的步进电机控制方法是采用CPU配合专用的步进电机驱动控制器来实现,存在成本高、不同种类的电动机必须要有相应的驱动控制器与之配对的问
[单片机]
STM32入门学习笔记之温湿度采集实验1
11.1 实验简介 11.1.1 温度采集方案概述 本实验采用三种方式来获取温湿度值,一种是STM32芯片内部自带的温度传感器,一种是基于单总线协议的DS18B20温度传感器,还有一种就是温湿度传感器DHT11或者DHT22,但是在成本上DHT22比较高,所以实验仅使用DHT11,DS18B20和内部温度传感器进行。 11.1.2 单线协议 单总线协议是美国的达拉斯公司推出的一款总线通信协议,所谓单线协议,就是通过一根线传输所有的数据,通俗地讲就是根据低电平的时间来判断总线上的数据是0还是1,比如拉低总线10us,就认为发送的是1,拉低总线50us,就认为发送的是0,单总线协议中,有3种时序,即写时序,读时序和检测时序。我们在
[单片机]
STM32入门学习之SysTick系统定时器(STM32F030F4P6基于CooCox IDE)
#include stm32_lib/inc/stm32f0xx_misc.h #include stm32_lib/inc/stm32f0xx_rcc.h int main(void){ //配置初值,系统定时器是倒数计时器,减1的 //注意:该函数的参数类型虽为uinit32_t,实际最大值为16777215,也就是2^24 SysTick_Config(SystemCoreClock/10); while(1); } //中断函数 void SysTick_Handler(void){ //这里做你想做的事情 } 系统定时器,就是这么简单!时钟为系统时钟,只要配置好倒计时数即可。 特别
[单片机]
高速ADC技术奠定SDR基础
无线技术标准的不断地演进,迫使电信公司必须支付庞大的成本,而软件无线电(SDR)则能解决这个问题。完全可重配置的无线射频系统的面世可以通过软件升级来支持新标准或多种标准,使电信公司不需花费高额成本布建新基础设施,就能提供新的无线技术、更新和更好的服务给用户。然而,完全可重配置无线电的最大挑战并非是软件,模拟电路及其与数字电路之间的桥接才是系统设计工程师需要面临的问题。本文主要讨论模拟数字转换在SDR实现中的挑战,以及ADC的哪些突破可以促进软件无线电的实际应用。 存在的问题 SDR对于电信公司来说,可以以最少的基础设施部署成本,满足覆盖范围宽广的无线电频率与标准,并应付它们的未来演进。针对此需求,要求设计具有足够的
[模拟电子]