HAl库控制L298N直流电机旋转笔记
2025-09-09 来源:cnblogs
主函数开始后的处理流程:
1..所有外设初始化:HAL_Init()
2.系统时钟配置
RCC振荡器初始化:HAL_RCC_OsConfig()
RCC时钟初始化:HAL_RCC_ClockConfig()
系统滴答定时器初始化:HAL_SYSTICK_Config()
3.高级定时器初始化
基本环境初始化:HAL_TIM_Base_Init()
时钟源配置:HAL_TIM_ConfigClockSource()
比较输出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()
初始化:HAL_TIM_Base_MspInit()
反初始化:HAL_TIM_Base_MspDeInit()
主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()
刹车和死区时间配置:HAL_TIMEx_ConfigBreakDeadTime()
通道比较输出配置:HAL_TIM_PWM_ConfigChannel()
定时器实际时钟频率为:72MHz/(定时器预分频+1)=36MHz
PWM频率为:定时器实际时钟频率/(定时器周期+1),[定时器周期为900的话,36MHz/(900+1)=40Khz]
实际PWM频率为:PWM频率/(高级定时器重复计数寄存器值+1),[高级定时器重复计数寄存器值为0的话,40KHz/0+1=40KHz]
PWM占空比为:定时器通道比较输出脉冲/定时器周期*100%,占空比为50%时电机不转。[定时器通道比较输出脉冲为450,定时器周期为900的话,则占空比为50%,电机不转]
GPIO引脚初始化
a.GPIO端口时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()
b.设置IO引脚:Pin
c.设置工作模式:Mode
d.设置速度:Speed
e.完成初始化:HAL_GPIO_Init()
4.启动定时器:HAL_TIM_BASE_Start()
5.启动定时器通道和互补通道PWM输出:HAL_TIM_PWM_Start() 、 HAL_TIMEx_PWMN_Start()
6.死循环:while(1){}
备注:
1.设置定时器捕获比较寄存器(定时器通道比较输出脉冲)的值:__HAL_TIM_SET_COMPARE(handle、channel、compare)
2.设置延时:HAL_Delay(1000)
3.使用定时器功能输出PWM信号到L298N直流电机驱动器,使其驱动25GA370直流电机转动。
4.编码器用于电机测速。在电机转动一圈时编码器可以输出固定的脉冲数,通过读取编码器脉冲可以获取当前电机转动状态。一般处理编码器脉冲有两种方法:T法:计算一定量的脉冲数所用的时间;M法:计算一段固定时间内所捕获的脉冲数。
- 基于STM32 HAL库的平衡循迹小车技术详解:串级PID控制、MPU移植及电赛应用
- rt-thread移植finSH控制台中STM32 HAL库的缺陷
- 使用STM32 HAL库进行GPIO控制的实例
- STM32HAL库控制TIM点亮led
- 【STM32】HAL库-电源控制(低功耗模式)
- 【STM32】HAL库-嵌套向量中断控制器NVIC
- 基于STM32F103C8T6和L298N电机驱动模块调速实验NO.1
- HAL库直流电机编码测速(L298N驱动)笔记
- 014_STM32程序移植之_L298N电机驱动模块
- 基于STM32F103C8T6+L298N通过PWM控制直流电机
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- 意法半导体中国本地造STM32微控制器启动规模量产
- 蓝牙信道探测技术原理与开发套件实践




