STM32-PWM输出
来源:互联网 发布:软件质量保证什么阶段 编辑:程序博客网 时间:2024/05/17 00:05
脉冲宽度调制,简称PWM。是一种利用数字信号来进行模拟信号的输出,拥有多种模式。主要的原理就是利用数字信号的高低电平的周期性变化来改变输出电压的平均值。从而达到模拟信号的输出模式。主要引用于电机调速,调光灯电路控制中。
在STM32中拥有多路PWM信号。每一个定时器的输出引脚都可以设置成相应的PWM信号的输出。PWM信号主要的参数有两个,周期的占空比。周期主要是由对应的定时器来确定。占空比就是PWM输出高电平的时间。假设现在定时的周期为2MS,在2MS中通过设置其中1MS引脚输出高电平。这样就可以说这个PWM的占空比为50%。
在程序运行中可以使用TIM_SetCompare1()来改变相应的占空比。这样就可以实现灵活的控制PWM信号的输出。
#include "Time.h"#include "stm32f10x.h"void TIM4_init(void){ GPIO_InitTypeDef GPIO_InitStruc; TIM_TimeBaseInitTypeDef TIM_struct; TIM_OCInitTypeDef TIM_ocinit; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //打开TIM4的时钟 GPIO_InitStruc.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruc.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8| GPIO_Pin_9; GPIO_InitStruc.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStruc); //初始化PWM信号的输出引脚 GPIO_InitStruc.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruc.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStruc.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruc); TIM_struct.TIM_Period=999; //设置定时器周期 72/72*1000 为1MS TIM_struct.TIM_CounterMode=TIM_CounterMode_Up; TIM_struct.TIM_ClockDivision=TIM_CKD_DIV1 ; TIM_struct.TIM_Prescaler=71; //定时器72分频 TIM_TimeBaseInit(TIM4,&TIM_struct); //TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); TIM_ocinit.TIM_OCMode=TIM_OCMode_PWM1; //设置PWM模式为1 TIM_ocinit.TIM_Pulse=200; //设置PWM初始占空比 TIM_ocinit.TIM_OutputState=TIM_OutputState_Enable; //使能pWM输出使能 TIM_ocinit.TIM_OCPolarity=TIM_OCPolarity_High; //设置PWM信号极性 TIM_OC1Init(TIM4,&TIM_ocinit); TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_OC2Init(TIM4,&TIM_ocinit); TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_OC3Init(TIM4,&TIM_ocinit); TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_OC4Init(TIM4,&TIM_ocinit); TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_Cmd(TIM4,ENABLE);}void TIM_PWM_Con(u16 DR1,u16 DR2,u16 DR3,u16 DR4){ TIM_SetCompare1(TIM4,DR1); //改变PWM的占空比 TIM_SetCompare2(TIM4,DR2); TIM_SetCompare3(TIM4,DR3); TIM_SetCompare4(TIM4,DR4);}
阅读全文
0 0
- stm32 PWM输出学习
- STM32定时器PWM输出
- stm32之PWM输出
- stm32 PWM输出
- STM32 PWM输出函数
- STM32-PWM输出
- STM32单片机PWM输出测试
- STM32输出PWM心得1
- STM32单片机学习---PWM输出
- STM32 PWM输出总结 TIM1
- stm32之pwm输出实验
- STM32输出PWM状态总结
- STM32 TIM1的PWM没有输出
- STM32学习笔记:通用定时器输出PWM
- STM32单片机学习(6) PWM输出实验
- STM32输出PWM控制无刷电调心得
- STM32接收串口数据-输出PWM
- STM32输出2路PWM-------------------------------major
- NYOJ2括号配对问题( 栈的应用)
- 汇编open file
- POJ 2251 Dungeon Master
- Android查看应用方法数-65536限制
- Redis的基本命令
- STM32-PWM输出
- 向上转型向下转型
- 线性渐变,彩虹
- 数据结构实验之链表五:单链表的拆分(栈)
- iOS获取屏幕宽度
- IM-linux一款linux下即时通讯软件实现(一)登陆注册实现
- Spark任务提交jar包依赖解决方案
- 【剑指Offer】面试题64:数据流中的中位数
- 咖啡的合适温度(前缀和以及加减标记)