当前位置: 首页 > news >正文

STM32之17.PWM脉冲宽度调制

 一·LED0脉冲宽度调制在TIM14_CHI,先将LED(PF9)代码配置为AF推挽输出模式,将PF9引脚连接到TIM14,

 

#include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void)
{//打开端口F的硬件时钟,就是供电
//打开端口F的硬件时钟,就是供电RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//打开端口E的硬件时钟,就是供电RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);GPIO_InitStruct.GPIO_Pin   =  GPIO_Pin_9 ; 	//9 号引脚GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF; //GPIO_Mode_AF;//输出模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;//不使能上下拉电阻GPIO_Init(GPIOF,&GPIO_InitStruct);//将PF9引脚连接到TIM14GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_10 ; 	//9 10号引脚GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;//输出模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;//不使能上下拉电阻GPIO_Init(GPIOF,&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_13 | GPIO_Pin_14; 	//9 10号引脚GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;//输出模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;//不使能上下拉电阻GPIO_Init(GPIOE,&GPIO_InitStruct);GPIO_WriteBit(GPIOF,GPIO_Pin_9,Bit_SET);GPIO_WriteBit(GPIOF,GPIO_Pin_10,Bit_SET);GPIO_WriteBit(GPIOE,GPIO_Pin_13,Bit_SET);GPIO_WriteBit(GPIOE,GPIO_Pin_14,Bit_SET);
}

 二·在配置TIM14定时器脉冲宽度

调动比较值1-100内,越小灯越亮

如果PWM信号的频率很高,比如大于80Hz,那么人眼就无法感知到灯的闪烁,而只能感知到灯的亮度。这时候,占空比越大,表示高电平的时间越长,灯就会越亮。

如果PWM信号的频率很低,比如小于50Hz,那么人眼就能感知到灯的闪烁,而不是灯的亮度。这时候,占空比越大,表示高电平的时间越长,灯就会闪烁得更明显。

void TIM14_init(void)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;//使能TIM14的硬件时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);//配置TIM14的定时时间TIM_TimeBaseStructure.TIM_Period = 100-1;  //自动重载,输出频率为100HzTIM_TimeBaseStructure.TIM_Prescaler = 2100-1;   //预分频值为8400    84000000/8400=10000(1S)TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //从0开始计数,然后计数到TIM_Period这个值就触发中断TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;		//PWM1的工作模式		TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//允许输出脉冲TIM_OCInitStructure.TIM_Pulse = 20;	//比较值80TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//有效状态为高电平//配置TIM3的中断触发:时间更新TIM_OC1Init(TIM14,&TIM_OCInitStructure);//使能TIM14工作TIM_Cmd(TIM14, ENABLE);}

http://www.lryc.cn/news/137334.html

相关文章:

  • VS2015打开Qt的pro项目文件 报错
  • 骨传导耳机会头疼吗?骨传导耳机会对身体不好吗
  • 【面试题系列】(一)
  • vscode C++17便捷配置教程(懒人版)
  • 动态数组实现链地址法哈希表
  • Eclipse(STS):pom.xml 报错:Multiple markers at this line
  • CSerialPort教程4.3.x (3) - CSerialPort在MFC中的使用
  • 2022版 的IDEA创建一个maven项目(超详细)
  • lvs实现DR模型搭建
  • 设计模式之迭代器模式(Iterator)的C++实现
  • 【0基础入门Python Web笔记】二、python 之逻辑运算和制流程语句
  • 容器——Docker
  • SQL注入之宽字节注入
  • MyBatis动态sql
  • L1-032 Left-pad 测试点全过
  • ssm+Vue.js在线购物系统源码和论文
  • 港联证券|指数或进入磨底阶段 短期关注环保、煤炭等板块
  • pytorch 实现VGG
  • 科技项目验收检测报告获取有哪些注意事项,作用都有哪些?
  • OceanBase:谁动了我得参数?
  • Python快速入门体验
  • 【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
  • MongoDB【CRUD练习-条件查询-文档关系】
  • 使用M2Mqtt 接受以及发布MQTT消息
  • 【SA8295P 源码分析】33 - Android GVM USB 透传配置
  • 华为OD机试 - 过滤组合字符串 - 深度优先搜索dfs算法(Java 2023 B卷 100分)
  • 【Unity自制手册】游戏基础API大全
  • 【LVS】4、HAProxy搭建web集群
  • 【应用层】网络基础 -- HTTP协议
  • 【线性DP】模型总结(terse版)