首页 > 其他分享 >STM32 f407 多通道PWM输出 基于HAL库和Cubemx配置

STM32 f407 多通道PWM输出 基于HAL库和Cubemx配置

时间:2024-09-28 13:49:45浏览次数:8  
标签:HAL htim1 多通道 Pulse STM32 TIM PWM CHANNEL

STM32 PWM的相关理论知识可以参考江科大的视频教程,或者正点和野火的HAL库开发手册,以下是相关链接:

[6-4] PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱动直流电机_哔哩哔哩_bilibili

31. TIM—高级定时器 — [野火]STM32 HAL库开发实战指南——基于野火F4系列开发板 文档

下面记录一下使用cubemx的配置过程以及HAL库输出PWM的相关代码

(选择开发板、开启外部时钟和SW调试接口、Project Manager设置相关操作略过)

1.选择要使用的定时器和通道,并开启PWM输出

注意使用内部时钟作为时钟源,注意TIM1采用的是APB2时钟源

2.设置分频系数和重装载值

要设置为多少就填入(要设置的值-1),其中Prescaler用于确定PWM的输入时钟频率,重装载值则决定PWM的输出频率

3.设置每个通道的PWM工作模式

这里的Mode和Pulse用来控制计数值大于/小于比较值Pulse时的输出电平,通过调节Pulse的值就可以改变输出的PWM的占空比。由于在程序运行过程中我们将不断调节Pulse的值,所以在这里保持Pulse值为默认不进行设置

4.生成代码并开启PWM输出通道

在main函数中加入以下代码(注意位置以免重新生成代码时被清除):

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);

通过__HAL_TIM_SetCompare函数设置每个通道的Pulse值以调节占空比:

__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_4, 1000);
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_3, 1000);
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_2, 1000);
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, 1000);

配置完成

高级定时器的功能很多,不要刚上来就想把所有东西全搞明白。因为要学习的东西很多很多,而遗忘的速度很快,不要那些可能很久都不会用到的知识点上浪费时间。

标签:HAL,htim1,多通道,Pulse,STM32,TIM,PWM,CHANNEL
From: https://blog.csdn.net/weixin_57904199/article/details/142593087

相关文章

  • STM32F407+IAP+Ymodem协议
    首先硬件, BOOT的接线方式是选择方式1,当stm32软件复位可以0x08000000重新启动程序重新加载bootloader程序移植官方的ymodem协议common.c1/**2******************************************************************************3*@fileSTM32F4xx_IAP/s......
  • 告别XP系统HAL.DLL错误:详解修复工具使用步骤与技巧
    在WindowsXP操作系统中,HAL.DLL(硬件抽象层DLL)是一个至关重要的系统文件,它负责操作系统与硬件之间的交互。当HAL.DLL文件丢失、损坏或无法被系统正确识别时,系统可能会无法启动,并显示错误信息,如“缺少或损坏<Windows根目录>\system32\hal.dll”。针对这一问题,虽然直接名为“XP系......
  • 【C#】Halcon显示图像(读文件路径、缓存、创建空白图像)
    publicHTuplehv_ExpDefaultWinHandle;//输入图像宽高Int64Input_Image_Width=0,Input_Image_Height=0;///<summary>///加载图像///</summary>///<paramname="type">类型,0:内存地址;1:文件路径;2:图像;3:空白图像</param>///......
  • 嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)
    前言:本文是基于B站草履虫编写的平衡车相关内容,包括模块和基础知识,结合代码进行讲解,将知识进行汇总(由于本篇内容较长,请结合目录使用)注:基于开源精神,本文仅供学习参考目录前言:本文是基于B站草履虫编写的平衡车相关内容,包括模块和基础知识,结合代码进行讲解,将知识进行汇总......
  • STM32-使用串口空闲中断,实现串口不定长接收
    示例代码是直接操作寄存器的核心思路很简单:接收到消息后,打开串口总线空闲中断总线进入空闲中断后,关闭空闲中断代码如下:``点击查看代码#include"myusart2.h"#include"string.h"#include"tool.h"charusart2_rec_buff[usart2_rec_len];u8usart2_rec_flag=0;......
  • 基于STM32的智能家庭安全监控系统
    目录引言项目背景环境准备硬件准备软件安装与配置系统设计系统架构关键技术代码示例传感器数据采集摄像头监控与数据处理实时报警功能实现应用场景结论1.引言智能家庭安全监控系统使用嵌入式设备,如STM32微控制器,来实时监控家庭环境。通过集成摄像头、运动传感......
  • VScode开发STM32笔记(一)生成bin文件
    操作步骤软件条件1、基于stm32-for-vscode工具开发;2、项目处于打开状态,且生成elf文件;具体的安装环境详见文档:https://blog.csdn.net/weixin_42435984/article/details/141894449具体操作1、通过VScode打开对应的STM32项目;2、使用stm32-for-vscode工具对其进行编译;3......
  • STM32F103C8T6+ESP8266+MQTT+EMQX完成数据上传和点灯环节
    本文参考以下文章:【最简单】STM32+ESP8266+MQTT+EMQX完成数据上传和点灯环节_stm32如何连接emqx-CSDN博客STM32+ESP8266通过MQTT协议连接本地EMQX(保姆级教学!资料开放!)_stm32驱动esp8266本地emqx-CSDN博客 一、在windows环境下或Ubuntu搭建EMQX云平台 参看这篇文章:搭建自己的M......
  • 基于STM32设计的智慧路灯(OneNet)(232)
    文章目录一、前言1.1项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成1.2设计思路1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】项目背景【5】摘要1.4开发工具的选择【1】设备端开发【2】上位机......
  • 题解:CF1799F Halve or Subtract
    \(\text{Link}\)介绍一下一种高维wqs的方法。此方法来自@YeahPotato的专栏严谨的WQS二分方法。题意给定一个长为\(n\)的序列\(v_{1\dotsn}\),三个常数\(d,a,b\)。你可以执行若干次以下两种操作:选择\(1\lei\len\),令\(v_i\gets\lceil\frac{v_i}{2}\rceil\)。......