STM32定时器应用——输出PWM给电机调速

Orenda ·
更新时间:2024-11-13
· 999 次阅读

目录(资料下载看最后)一、PWM简介二、硬件部分三、软件部分1. PWM初始化 pwm.c2. PWM初始化pwm.h3. 电机控制motor.c4. 电机控制motor.h5. 备注三、参考资料四、资料下载 一、PWM简介

简单来说,存在一个计数器,计数值随时间进行周期性变化。最小值和最大值之间存在一个自定的值,当计数器的值小于自定值时,I/O输出低电平,大于自定值则产生高电平。通过设置不同的最大值和自定值,可以控制I/O口输出不同时间宽度的高低电平。

定义GPIO结构体 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); ///> 使能GPIOA时钟 /*! * 初始化GPIOA9, GPIOA10 */ { GPIO_InitStructrue.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; ///> 初始化PA9, PA10 GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_OUT; ///> 普通输出模式 GPIO_InitStructrue.GPIO_OType = GPIO_OType_PP; ///> 推挽输出 GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_100MHz; ///> 输出频率为100MHz GPIO_InitStructrue.GPIO_PuPd = GPIO_PuPd_UP; ///> 上拉,输出高电平 GPIO_Init(GPIOA, &GPIO_InitStructrue); ///> 初始化GPIO } GPIO_SetBits(GPIOA, GPIO_Pin_9); ///> P9设置为高电平 GPIO_ResetBits(GPIOA, GPIO_Pin_10); ///> P10设置为低电平 } 4. 电机控制motor.h /**@file motor.h * @brief 电机对应I/O口初始化 * @author BROSY * @date 2020年4月19日 * @version V1.0 * @copyright CSU | BROSY ******************************************************************************* * @par 修改日志: * *
Date Version Author Description *
2018/08/17 1.0 songqijin 创建初始版本 *
******************************************************************************* */ #ifndef __MOTOR_ #define __MOTOR_ /*===============================函数声明 ======================================*/ void MOTOR_Init(void); ///< 初始化电机对应I/O口 PA9, PA10 #endif
5. 备注 PWM频率过高会导致电机发出蜂鸣声 电机转速较慢可能是因为GND接口没有接到一起 找不到头文件可能是因为没有设置包含路径 三、参考资料

B站视频:【正点原子】stm32f4视频教程(初级篇)
文字资料站:正点原子论坛

四、资料下载

有分的大佬可以直接点上面下载(2个积分),没分的也可以到群文件里面下载
不需要资料的也可以来一起玩啊

QQ群: 565515761 二维码
在这里插入图片描述

喜欢搞事情、DIY、学技术的同学可以关注下面这个的公众号,了解更多有更趣的项目。
在这里插入图片描述


作者:BROSY



stm32 pwm 电机 定时器

需要 登录 后方可回复, 如果你还没有账号请 注册新账号