STM32之17.PWM脉冲宽度调制

news2025/1/28 1:05:07

 一·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引脚连接到TIM14
	GPIO_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;  //自动重载,输出频率为100Hz
	TIM_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;	//比较值80
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//有效状态为高电平
	//配置TIM3的中断触发:时间更新
	TIM_OC1Init(TIM14,&TIM_OCInitStructure);
	

	
	//使能TIM14工作
	TIM_Cmd(TIM14, ENABLE);
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

021-从零搭建微服务-短信服务(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

Git gui教程---第八篇 Git gui的使用 创建一个分支

一般情况下一个主分支下代码稳定的情况下会新建出一个分支&#xff0c;然后在分支上修改&#xff0c;修改完成稳定后再合并到主分支上。 或者几个人合作写一份代码&#xff0c;每个人各一个分支&#xff0c;测试稳定再合并到主分支上。 在git gui选择菜单栏“分支”&#xff0…

centos7安装hadoop 单机版

1.解压 &#xff08;1&#xff09;将hadoop压缩包复制到/opt/software路径下 &#xff08;2&#xff09;解压hadoop到/opt/module目录下 [rootkb135 software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ &#xff08;3&#xff09;修改hadoop属主和属组 [rootkb135 m…

VirtualBox虚拟机安装Centos7详细教程图解

一、前期准备工作&#xff1a; 1、虚拟机下载 VirtualBox版本&#xff1a;7.0.6 下载 VirtualBox 的下载页面&#xff1a;https://www.virtualbox.org/wiki/Downloads VMWare 虚拟机软件&#xff08;收费的&#xff0c;要使用请购买正版软件&#xff09;的官网&#xff1a;…

Springboot中sharding-jdbc的API模式并使用自定义算法

Springboot中sharding-jdbc的API模式并使用自定义算法 可配合AbstractRoutingData使用切换数据源 程序用到了AbstractRoutingData来切换数据源&#xff08;数据源是自定义的格式编写并没有用springboot的自动装配的格式写&#xff09;&#xff0c;但是又用到sharding-jdbc进行…

pycharm添加虚拟环境以及虚拟环境安装pytorch

file、settings、interpreter、add interpreter、add local interpreter 记住不要勾选inherit&#xff0c;不然会把主环境的东西继承到虚拟环境。 创建前可以先点existing看看有没有已经建好的虚拟环境 有的时候pycharm有问题&#xff0c;创建了虚拟环境没有显示。找一个.py文…

交通网络分析性能再升级,SuperMap iServer新增开启SSC分析模型

导语 SSC分析模型&#xff0c;全名SuperMap Short Cut&#xff0c;底层采用Contraction Hierarchies&#xff08;简称CH&#xff09;算法&#xff0c;该算法旨在通过对图形进行预处理和优化来降低最佳路径分析的时间复杂度。SuperMap iServer 11i&#xff08;2023&#xff09;&…

scikit-learn中OneHotEncoder用法

One-Hot编码&#xff0c;又称为一位有效编码&#xff0c;是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值&#xff0c;然后&#xff0c;每个整数值被表示为二进制向量&#xff0c;将整数索引标记为1&#xff0c;其余都标为0。 OneHotEncoder()常用参数解释 …

【Winform学习笔记(十)】TextBox文本框控件 光标定位到文本末尾的方法

TextBox文本框控件 光标定位到文本末尾的方法 前言正文1、具体代码2、使用示例 前言 本文中主要介绍实现 TextBox 文本框控件的光标定位到文本末尾的方法. 正文 1、具体代码 /// <summary> /// TextBox文本框控件 光标定位到文本末尾的方法 /// </summary> ///…

next.js报错点

next.js报错点 1.类型“{ children: ReactNode; }”与类型“IntrinsicAttributes”不具有相同的属性。2. 不能将类型“void[]”分配给类型“ReactNode”&#xff1f;3.useRouter only works in Client Components. Add the "use client" directive at the top of the…

IDEA的maven想显示层级关系,而非平级

新版和旧版的IDEA的位置不一样&#xff0c;2023.2.1的版本在右上角的“” 这个位置 如图所示&#xff1a; 然后点击按模块分组&#xff1a;

[Stable Diffusion教程] 第一课 原理解析+配置需求+应用安装+基本步骤

第一课 原理解析配置需求应用安装基本步骤 本次内容记录来源于B站的一个视频 以下是自己安装过程中整理的问题及解决方法&#xff1a; 问题&#xff1a;stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘ 解答&#xff1a;打开webui.bat 把 if not de…

从零开始的自动化测试框架——Web篇01

Selenium 谈到web自动化&#xff0c;逃不开的一定会是Selenium。这是最为主流&#xff0c;也是最广为人知的一项web自动化产物。但目前业内web自动化其实主要分为以下方向&#xff1a; Selenium&#xff0c;核心主流自动化技术&#xff0c;功能齐全&#xff0c;一般是搭配web…

【算法日志】动态规划刷题:01背包问题,多重背包问题(day37,day38)

代码随想录刷题60Day 目录 前言 目标和&#xff08;01背包&#xff09; 一和零&#xff08;01背包&#xff09; 零钱兑换&#xff08;多重背包&#xff09; 排列总和&#xff08;多重背包&#xff09; 前言 这两天都是背包问题&#xff0c;其中的01背包的一些应用问题需要…

迈步从头越——同为科技(TOWE)22周年庆典活动圆满举行

8月23日&#xff0c;同为科技&#xff08;TOWE&#xff09;迎来公司成立22周年纪念日&#xff0c;这是属于TOWE品牌的又一里程碑时刻。从2001到2023&#xff0c;从产品到品牌&#xff0c;从技术到服务&#xff0c;同为科技&#xff08;TOWE&#xff09;始终秉承着专注于终端设备…

电子合同9问9答,君子签为您答疑解惑

随着互联网的发展&#xff0c;人们交易行为的改变、电子合同的推广&#xff0c;买卖合同、租房合同、采购合同、劳动合同、招投标文件等都开始在线上签署。签署过程中&#xff0c;君子签针对大家的一些疑虑&#xff0c;整理了相关解答。 1、 签电子合同时&#xff0c;如何确…

MMEdu库的下载和安装(Python版)

为保证程序的顺利运行&#xff0c;这里提供MMEdu库的下载安装包。 OpenXLabEdu开源资源&#xff1a;OpenXLabEdu帮助文档 — OpenXLabEdu 文档 现MMEdu一键安装包已升级为XEdu一键安装包&#xff0c;下文提到的MMEdu文件&#xff0c;应理解为XEdu一键安装包。 第一步&#x…

融合算法综述

融合算法 前言一、概念二、原理三、融合的先决条件四、融合分类4.1、前融合和后融合4.2 、数据级融合、特征级融合和决策级融合 五、典型融合算法 多传感器信息融合&#xff08;Multi-sensor Information Fusion,MSIF&#xff09;&#xff1a;利用计算机技术将来自多传感器或多…

小红书旅游种草笔记:如何打造爆款内容,吸引万千粉丝?

随着社交媒体的飞速发展&#xff0c;小红书作为国内知名的分享平台&#xff0c;已经成为越来越多人展示生活、交流心得的阵地。在众多分类中&#xff0c;旅游种草笔记尤为热门&#xff0c;吸引了大量用户关注。那么&#xff0c;如何在这片竞争激烈的红海中&#xff0c;打造出爆…

Spring Boot:让你轻松掌握自动装配的奥秘

Spring Boot是基于Spring框架开发的一种应用框架&#xff0c;它通过自动装配机制&#xff0c;大大简化了Spring应用的开发和部署&#xff0c;使开发者可以更加专注于业务逻辑的实现&#xff0c;而无需过多关注Bean的实例化和装配过程。本文将从以下几个方面介绍Spring Boot的自…