
本篇文章我将针对PWM控制电机与编码器读取电机转速的STM32CubeMX配置过程进行详细的讲解,让准备学习HAL库的小伙伴能够更好的理解STM32CubeMX如何配置。 1、硬件准备 (1)所需硬件 芯片:STM32F103RCT6 驱动:电机驱动板或TB6612(电机驱动芯片) 电池:12V Libo电池 电机:带编码器电机 轮子:我用的是麦克纳姆轮 (2)硬件连接: PA8 —— 电机驱动板PWM1 GND —— 电机驱动板PWM2 (这里若要反转则PWM1接地,PWM2接PA8;如果在小车中两者都需接PWM引脚,正转:PWM1给一定占空比,PWM2占空比为0) PA9(USART1_RX) —— 接串口TX PA10(USART1_TX) —— 接串口RX PB6 —— 编码器A PB7 —— 编码器B 2、STM32CubeMX配置: 1.1 所用工具: 芯片:STM32F103RCT6 IDE:MDK-Keil软件 STM32F1xxHAL库 1.2 知识概括: STM32CubeMX创建TIMx、USART例程 Keil软件程序编写 1.3 工程创建 1、芯片选择 芯片:STM32F103RCT6(根据自己的板子来进行选择) ![]() 2、设置RCC 设置高速外部时钟HSE 选择外部时钟源 ![]() 3、LED1配置 我使用的板子LED1引脚为PD2,初始电平为高电平,目的是通过观察小灯的亮灭判断是否进入定时器中断 ![]() 4、USART1配置 异步收发,波特率默认:115200 Bit/s ![]() 5、PWM配置 使用定时器1通道1和通道4(TIM1_CH1和TIM1_CH4),频率10KHz ![]() 6、定时器中断配置 使用定时器2(TIM2),周期设为10ms,即10ms进一次定时器中断 ![]() 打开更新定时器中断 ![]() 7、编码器配置 STM32自带编码器配置,使用定时器4(TIM4_CH1和TIM4_CH2),打开更新定时器中断 ![]() 8、中断优先级配置 因为编码器中断要发生在定时10ms中断内,故编码器中断的抢占优先级要大于定时10ms ![]() 9、配置时钟 F1系列芯片系统时钟为72MHzs ![]() 10、项目创建最后步骤 设置项目名称 选择所用IDE ![]() 11、输出文件 ②处:复制所用文件的.c和.h ③处:每个功能生产独立的.c和.h文件 ![]() 12、创建工程文件 点击GENERATE CODE 创建工程 13、配置下载工具 这里我们需要勾选上下载后直接运行,然后进行一次编译 ![]() 3、STM32源代码: (1)下面的代码之前有用过hal库的小伙伴应该都很容易理解,小政就不过多解释,有不懂的地方欢迎在评论区下方提问。在main.c加上:
(2)烧入STM32中,串口展示: ![]() (3)实物展示: ![]() 4、总结 以上就PWM控制电机转速与编码器读取电机速度的HAL库配置与keil编程,后续会推出利用PID算法闭环控制电机转速(HAL库) |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化