STM32 PWM简介及呼吸灯实验
来源:互联网 发布:单片机芯片型号 编辑:程序博客网 时间:2024/04/28 11:47
1.PWM简介
脉冲宽度调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说,就是对脉冲宽度的控制,原理图如下:
当CNT<CCRx时,输出0,反之,则输出1。因此可以输出如上的PWM示意图。当CNT达到CCRx时,重新归零,然后再向上计数,依次循环。通过改变CCRx的值,就可以改变PWM的输出占空比,改变ARR的值,就可以改变PWM输出的频率,这就是PWM输出的原理。
这里我们使用STM32F4的TIM14的CH1产生一路PWM输出。
值得一提的是控制PWM的三个寄存器:捕获/比较模式寄存器(TIMx_CCMR1/2),捕获/比较使能寄存器(TIMx_CCER),捕获/比较寄存器(TIMx_CCR1~4)。这三个寄存器针对不同的定时器不同的输出模式设置各不相同,具体可参见STM32中文参考手册16节
使用PWM与使用定时器的功能实际上使类似的。
1)开启TIM14和GPIO时钟,配置PF9选择复用功能AF9(TIM14)输出。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE); //TIM14时钟使能
GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); //GPIOF9复用为定时器 14
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx 的
3)设置TIM14_CH1的PWM模式,使能TIM14的CH1输出。
在库函数中,PWM通道的设置是通过函数TIM_OC1Init()~TIM_OC4Init()来设置的,不同的通道设置不一样,这里我们使用的是通道1,所以使用的函数是TIM_OC1Init()。
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择模式PWM
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性低
TIM_OC1Init(TIM14, &TIM_OCInitStructure); //根据T指定的参数初始化外设 TIM1 4OC1
4)使能TIM14.
TIM_Cmd(TIM14, ENABLE); //使能TIM14
5)修改TIM14_CCR1来控制占空比。
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare2);
2.呼吸灯设计
- STM32 PWM简介及呼吸灯实验
- 基于stm32的pwm呼吸灯
- STM32定时器产生PWM--呼吸灯
- STM32之呼吸灯实验
- STM32使用PWM控制LED呼吸灯效果
- 【PIC32MZ】PWM呼吸灯
- PWM输出,呼吸灯
- STM32学习-PWM实验
- STM8S PWM 应用 呼吸灯
- PWM --呼吸灯
- verilog PWM实现呼吸灯
- 基于PWM的呼吸灯
- STM32呼吸灯
- stm32之pwm输出实验
- JAVA版树莓派呼吸灯完整程序(PWM)及碰到的各种坑
- STM32单片机学习(6) PWM输出实验
- 基于STM32最简单的呼吸灯
- stm32成长记之LED呼吸灯
- HighCharts入门
- Vim-airline插件安装配置
- Altium Designer如何从已有的PCB图中导出封装库
- Mysql 聚合函数,内外连接 , 视图 ,索引,触发器, 存储过程
- 空间 ,微信,微博等分享的代码
- STM32 PWM简介及呼吸灯实验
- &&与||的短路运算
- Mysql自连接查询
- 自定义View由浅入深__ViewGroup(一)
- 稀疏矩阵的存储格式(Sparse Matrix Storage Formats)
- 用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
- 问题 B: 数制转换
- opensips安装教程
- react native -FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null)