单片机
返回首页

STM32Cubev6 PWM波输出

2025-10-22 来源:bilibili

工作环境:

STM32CubeMXv6

Keil5

    PWM波输出和时钟有关,所以我们需要先配置时钟,打开左侧的下拉框System Core,点击RCC选项;

    我选用的是8M的外部高速时钟(以实际情况为准),在下方的配置框中更改High Speed Clock(HSE)为Crystal/Ceramic Resonator;

    配置HSE为8Mhz,APB1为54Mhz;

        打开左侧的下拉框Timers,点击TIM3选项;

    打开PWM Channel1(通道一)和 PWM Channel2(通道二)选择为PWM Generation CH1和PWM Generation CH2,此时我们可得到两路频率相同的方波,因为他们用的是同一个定时器,如果需要生成不同频率的PWM波那么我们就需要开启两个不同的定时器。

Input Capture direct mode:输入直接捕获模式

Input Capture indirect mode:输入间接捕获模式

Input Capture triggered by TRC:TRC触发输入捕获

Output Compare No Output:输出比较无输出

Output Compare CH1:输出比较CH1

PWM Generation No Output:PWM生成无输出

PWM Generation CH1:PWM生成CH1

Forced Output CH1:强制输出CH1

    我首先需要配置一个1ms触发一次的定时器中断(1Khz),我们先通过芯片对应的datasheet查到TIM6是在APB1上的,我们通过RCC配置它为54Mhz(最高),根据公式

Tout = (PSC+1)* (ARR+1)/Tclk

得到预分频值为1(实际填入需要-1,所以在配置中填入0),自动重载值为54000-1=53999,允许自动重载;

PWM模式我们选择PWM Mode 1; 

   PWM Mode 1:在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平,否则为有效电平。

    PWM Mode 2:在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。

    比较寄存器分别设置为13499(占空比25%)和26999(占空比50%);

    注意,如果需要输出两个不同频率的PWM波则需要两个定时器;

    通道输出极性为Low;

设置完成后

    点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;

    打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral; 

    最后点击右上角的GENERATE CODE按钮后生成代码。

    生成代码后打开工程文件夹,用Keil5打开工程。

    编译

    在while循环前初始化加入启动PWM输出

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); //启动定时器3-1的PWM输出 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2); //启动定时器3-2的PWM输出

   其中,第一个参数为TIM定时器名,第二个参数为通道名

   运行,即可生成两路频率为1Khz,占空比分别为25%和50%的方波。

   如果需要更改PWM波的占空比,可以使用__HAL_TIM_SetCompare()

__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, 120); __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, 120);

    其中,第一个参数为TIM定时器名,第二个参数为通道名,第三个参数为CCRx的值

参考资料:

STM32F7开发指南-HAL库版本_V1.1

HAL库教程10:定时器的PWM模式应用   https://yatao.blog.csdn.net/article/details/89326363


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外遥控音量控制

  • LM317过压保护

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章