新手上路
积分 45
金钱 45
注册时间 2019-7-11
在线时间 9 小时
5 金钱
本帖最后由 htq398 于 2020-3-1 10:09 编辑
初学STM32的萌新求助
从前进状态变成后退状态、左转到后退、右转到后退、后退到前进 蓝牙都会断开
前进和后退之间切换时,轮子直接停了不转,蓝牙断开,L298N的电源灯一直亮
左右切换后退时,轮子会按后退一直转 ,蓝牙断开,后退切换到左右正常
如果切换时先切换到停止 再切换其他 就什么问题都没有 蓝牙也不会断
试过拔掉蓝牙,用电脑直接从串口发数据控制,上面断开的问题变成了会停止
比如发送A是前进指令 再发送B使后退时小车会停止 第二次发送B才会后退
代码上传在附件 串口中断函数在stm32f10x_it.c 马达控制函数在output.c
3.1号: 把L298N的控制口改为控制4个LED 发现可以随意切换四个状态 蓝牙不会断开
是不是L298N使用不对?
接线是这么接的 单片机和L298N共地由L298N供电
// 串口中断服务函数
void DEBUG_USART_IRQHandler(void)
{
char ucTemp;
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp = USART_ReceiveData(DEBUG_USARTx);//DEBUG_USARTx宏定义USART1
// USART_SendData(DEBUG_USARTx,ucTemp);
//USART_SendData(DEBUG_USARTx,'5');
switch (ucTemp)
{
case 'A': {front();USART_SendData(DEBUG_USARTx,'A'); break;}//串口收到A前进
case 'B': {back();USART_SendData(DEBUG_USARTx,'B'); break;}
case 'C': {left();USART_SendData(DEBUG_USARTx,'C');break; }
case 'D': {right();USART_SendData(DEBUG_USARTx,'D');break; }
case 'E': {stop(); USART_SendData(DEBUG_USARTx,'E'); break;}
}
}
}
//L298N控制
void back(void)
{
Motor_PIN0_0;
Motor_PIN1_1;
Motor_PIN2_0 ;
Motor_PIN3_1;
}
//PIN0~3对应控制PA0~3
//PA0~3接到L298N的IN1~4
void front(void)
{
Motor_PIN0_1;//PA0置1
Motor_PIN1_0;//PA1置0
Motor_PIN2_1;//PA2置1
Motor_PIN3_0;//PA3置0
}
void left(void)
{
Motor_PIN0_0;
Motor_PIN1_0;
Motor_PIN2_1;
Motor_PIN3_0;
}
void right(void)
{
Motor_PIN0_1;
Motor_PIN1_0;
Motor_PIN2_0;
Motor_PIN3_0;
}
void stop(void)
{
Motor_PIN0_0;
Motor_PIN1_0;
Motor_PIN2_0;
Motor_PIN3_0;
}
我来回答