记录一下学习过程,L298N相关资料请看其他博主,这里直接照着我的做也能成功。
网上找的 L298N引脚图,要和stm32共地,统一参考电压
电机用的这款
需要注意的是,我使用的外部供电是12v,不需要拔掉板载5v使能的插线帽,不过要驱动电机就要用PWM,也就是本文使用的通道使能B(把插线帽拔掉),IN3和IN4都对应B通道,最初都给低电平,处于等待中。
以下是cubemx的配置图
1、使用外部时钟晶振
2、开启Serial Wire
3、启动B通道,这里使用TIM2内部时钟通道1
4、设置GPIO,IN3和IN4,OutPut模式,这里设置的PB4和PB5,顺便给它们改个名字
5、保存生成
最后来看一下代码和连接图,代码非常简单,只需要先开启PWM通道,再给定GPIO的高低电平,设置正反转,以及占空比,就可以启动电机了,这里只给启动,有需要可以再新建一个.c文件封装几个函数,就可以调用实现正反转及停止,多用几个就可以驱动小车啦!
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_WritePin(PB4_GPIO_Port,PB4_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(PB5_GPIO_Port,PB5_Pin,GPIO_PIN_RESET);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
注意下载完程序后,再接入12v外接电源,如图所示(接地要引出两根线噢