HAL TIM2的PWM

main函数跑下面代码就行

        懂的就懂,不讲原理,自己看

	MX_TIM2_Init(7,999);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_3,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_4,500);

   配置函数

void MX_TIM2_Init(u16 Pres,u16 Peri){__HAL_RCC_TIM2_CLK_ENABLE();			//使能定时器2__HAL_RCC_GPIOA_CLK_ENABLE();			//开启GPIOA时钟htim2.Instance=TIM2;            //定时器2htim2.Init.Prescaler=Pres;       //定时器分频htim2.Init.CounterMode=TIM_COUNTERMODE_UP;//向上计数模式htim2.Init.Period=Peri;          //自动重装载值HAL_TIM_PWM_Init(&htim2);       //初始化PWM//-------------------------------------------------------------------TIM_OC_InitTypeDef TIM2_CH1Handler;	TIM2_CH1Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1TIM2_CH1Handler.Pulse=0;            //设置比较值,此值用来确定占空比,默认0TIM2_CH1Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低  cc1p为0HAL_TIM_PWM_ConfigChannel(&htim2,&TIM2_CH1Handler,TIM_CHANNEL_1);//配置TIM2通道1HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//开启PWM通道2GPIO_InitTypeDef GPIO_Initure;GPIO_Initure.Pin=GPIO_PIN_0;           	//PA0GPIO_Initure.Mode=GPIO_MODE_AF_PP;  	//复用推挽输出GPIO_Initure.Pull=GPIO_PULLUP;          //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;     //高速GPIO_Initure.Alternate= GPIO_AF2_TIM2;	//PA1复用为TIM2_CH1HAL_GPIO_Init(GPIOA,&GPIO_Initure);//----------------------------------------------------------------------	TIM_OC_InitTypeDef TIM2_CH2Handler;	TIM2_CH2Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1TIM2_CH2Handler.Pulse=0;            //设置比较值,此值用来确定占空比,默认0TIM2_CH2Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低  cc1p为0HAL_TIM_PWM_ConfigChannel(&htim2,&TIM2_CH2Handler,TIM_CHANNEL_2);//配置TIM2通道2HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);//开启PWM通道2GPIO_Initure.Pin=GPIO_PIN_1;           	//PA1GPIO_Initure.Mode=GPIO_MODE_AF_PP;  	//复用推挽输出GPIO_Initure.Pull=GPIO_PULLUP;          //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;     //高速GPIO_Initure.Alternate= GPIO_AF2_TIM2;	//PA1复用为TIM2_CH2HAL_GPIO_Init(GPIOA,&GPIO_Initure);//------------------------------------------------------------TIM_OC_InitTypeDef TIM2_CH3Handler;	TIM2_CH3Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1TIM2_CH3Handler.Pulse=0;            //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%TIM2_CH3Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低  cc1p为0HAL_TIM_PWM_ConfigChannel(&htim2,&TIM2_CH3Handler,TIM_CHANNEL_3);//配置TIM2通道3HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);//开启PWM通道3GPIO_Initure.Pin=GPIO_PIN_2;           	//PA2GPIO_Initure.Mode=GPIO_MODE_AF_PP;  	//复用推挽输出GPIO_Initure.Pull=GPIO_PULLUP;          //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;     //高速GPIO_Initure.Alternate= GPIO_AF2_TIM2;	//PA2复用为TIM2_CH3HAL_GPIO_Init(GPIOA,&GPIO_Initure);
//----------------------------------------------------TIM_OC_InitTypeDef TIM2_CH4Handler;	TIM2_CH4Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1TIM2_CH4Handler.Pulse=0;            //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%TIM2_CH4Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低  cc1p为0HAL_TIM_PWM_ConfigChannel(&htim2,&TIM2_CH4Handler,TIM_CHANNEL_4);//配置TIM2通道4HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);//开启PWM通道4GPIO_Initure.Pin=GPIO_PIN_3;           	//PA3GPIO_Initure.Mode=GPIO_MODE_AF_PP;  	//复用推挽输出GPIO_Initure.Pull=GPIO_PULLUP;          //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;     //高速GPIO_Initure.Alternate= GPIO_AF2_TIM2;	//PA3复用为TIM2_CH4HAL_GPIO_Init(GPIOA,&GPIO_Initure);}

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

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

相关文章

<sa8650>sa8650 qcxser-之-串行解串器ADC使用

<sa8650>sa8650 qcxser-之-串行解串器GPIO输入输出 <sa8650>sa8650 qcxser-之-串行解串器GPIO的map <sa8650>sa8650 qcxser-之-串行解串器ERRB的map <sa8650>sa8650 qcxser-之-串行解串器ADC使用 <sa8650>sa8650 qcxser-之-串行解串器ADC使用 一 前言二 ADC配置三 验…

SpringBoot数据校验

后端在进行数据请求时,通常会校验前端传递过来的参数是否是空值或者是null。通常会通过if判断值是否满足条件,不满足就返回。但如果前端传递的是表单,那么要进行判断的条件就比较多了,太多的if会让代码变得臃肿,而且也…

DshanMCU-R128s2芯片手册与资料

CPU手册 Arm Cortex-M33 核心手册: Arm Cortex-M33 Processor Technical Reference ManualXuanTie C906 核心手册:T-Head XuanTie C906 Processor Datasheet DSP 相关 HIFI 5 DSP 相关:HiFi 5 DSPXtensa Xplorer 下载地址:Xplo…

【python】进阶--->网络编程(一)

一、网络编程 网络 : 为了联络多方然后进行通信,将数据从一方传递给另一方. 网络协议 : 不同计算机只需要通过联网,那么就可以相互进行传递数据,那么不同种类的计算机之间就和不同语言的人之间沟通一样,需要一种大家都认可都遵循的协议即可. 那么计算机都遵循的网络通信协议叫…

apache poi_5.2.5 实现对表格单元格的自定义变量名进行图片替换

apache poi_5.2.5 实现对表格单元格的自定义变量名进行图片替换 实现思路 1.首先定位到自定义变量名 2.然后先清除自定义变量名,可利用setText(null,0)来清除 3.在自定义变量名的位置添加图片,使用下面的代码 4.对于图片布局有要求的,利用C…

synchronized修饰方法和代码块底层实现有什么区别

首发2023-12-21 18:01yuan人生 synchronized修饰方法和代码块底层实现有什么区别-今日头条 (toutiao.com) 面试的时候经常有人问synchronized修饰方法和代码块底层实现有什么区别了,你来说下。实际做java开发很少有人关注这些东西,也基本没用。但面试…

Rocky Linux 9.3 安装 MinIO 最新版本 (超级详细版本)

安装步骤 MinIO官网文件目录 运行以下 curl 命令将 MinIO 的二进制文件下载到“ /usr/local/bin/minio ” curl -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio 现在通过下面的 chmod 命令使 MinIO 二进制文件可执行 sudo chmod x /us…

Codeforces Round 916 (Div. 3)(A~E2)

A 统计一下每个字母的出现次数然后输出即可 #include <bits/stdc.h> #define rep(i,a,b) for(register int i (a); i < (b); i) #define fep(i,a,b) for(register int i (a); i > (b); --i) #define ls p<<1 #define rs p<<1|1 #define PII pair&l…

【深度学习】序列生成模型(四):评价方法

文章目录 一、困惑度&#xff08;Perplexity&#xff09;1. 定义2. 计算3. 衡量两个分布之间的差异4. 意义 二、BLEU&#xff08;Bilingual Evaluation Understudy&#xff09;1. 定义2. 意义3. 实例 三、ROUGE&#xff08;Recall-Oriented Understudy for Gisting Evaluation&…

linux 内核经典RCU

如果不关心使用的RCU是不可抢占RCU还是可抢占RCU&#xff0c;应该使用经典RCU的编程接口。最初的经典RCU是不可抢占RCU&#xff0c;后来实现了可抢占RCU&#xff0c;经典RCU的意思发生了变化&#xff1a;如果内核编译了可抢占RCU&#xff0c;那么经典RCU的编程接口被实现为可抢…

分布式全局ID之雪花算法

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 雪花算法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是雪花算法&#xff1f…

Kafka--Kafka日志索引详解以及生产常见问题分析与总结

一、Kafka的Log日志梳理 ​ 这一部分数据主要包含当前Broker节点的消息数据(在Kafka中称为Log日志)。这是一部分无状态的数据&#xff0c;也就是说每个Kafka的Broker节点都是以相同的逻辑运行。这种无状态的服务设计让Kafka集群能够比较容易的进行水平扩展。比如你需要用一个新…

嵌入式开发工程师

嵌入式开发 岗位需求 上岗必备 文章目录 嵌入式开发前言一、负责新产品的电路图、PCB、嵌入式程序、软硬件调试等工作二、负责对现有产品进行硬件优化、调试、维护、排故等工作三、 负责各种单片机,传感器,元器件选型以及BOM表整理四、 负责硬件产品研发和量产过程中项目设计…

网络技术基础与计算思维实验教程_3.1_单BSS实验(基本服务集合实验)

无线局域网的最小基本组件是基本服务BSS 实验内容 实验目的 实验原理 实验步骤 为了显示AP的有效通信范围 切换到物理工作区 把物理工作区导航到城市家园 直接在城市家园放置AP0 可以看到AP0的通信范围 放置笔记本电脑 在默认情况下 笔记本电脑上 安装了以太网卡 现在换成无…

大模型之二十一-小语言模型塞道开启

当前提到大语言模型&#xff0c;大家想到的都是动辄百亿规模以上参数量的模型&#xff0c;13B、70B都是稀疏平常入门级的&#xff0c;但是目前从模型层面来看&#xff0c;模型参数量的规模两极分化已经来临&#xff0c;早期各大公司为了效果怼上去&#xff0c;采取了简单粗暴的…

[Angular] 笔记 4:ngFor

ngFor 是一个 for 循环&#xff0c;只能用于循环遍历 list&#xff0c;不能用于遍历单个实体。 下图中的 pokemons 通常是数据库中的数据&#xff1a; 例子&#xff1a; app.components.ts: // 使用类型检查 interface Pokemon {id: number;name: string;type: string;// is…

c++学习:static在类中的空间分配+实战+单例设计模式

目录 情况一&#xff1a; 证实方法&#xff1a; 结果&#xff1a; 情况二&#xff1a; 证实方法&#xff1a; 结果&#xff1a; 实战1&#xff1a;在同一个类中不同对象中传递消息 方法一&#xff1a; 方法二&#xff1a; 实战2&#xff1a;该类只用创建一次&#xff0…

【postgresql】PSQLException: An I/O error occurred while sending to the backend.

org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. 发送到后端时发生I/O错误。 java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 34284 尝试将超出范围的整数作为2字节值发送&#xff1a;34284 pos…

C++学习——访问限定符

在C中&#xff0c;protected, friend, 和 public 是访问限定符&#xff0c;用于指定类成员的访问级别。 访问限定符 public public 成员可以从类的任何地方访问&#xff0c;包括类的外部。这通常是你希望外部代码能够直接访问和操作的那些方法和属性。比如&#xff0c;一个类…

OpenHarmony开发环境快速搭建(无需命令行)

一. 搭建Windows环境 在嵌入式开发中&#xff0c;很多开发者习惯于使用Windows进行代码的编辑&#xff0c;比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段&#xff0c;大部分的开发板源码还不支持在Windows环境下进行编译&#xff0c;如Hi3861、H…