找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1007|回复: 0
打印 上一主题 下一主题
收起左侧

关于stm32蓝牙小车的连接问题

[复制链接]
跳转到指定楼层
楼主
ID:892737 发表于 2021-7-30 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在做一个stm32f103rct6的蓝牙遥控小车,但是蓝牙部分出了问题
    主程序是这个
  1. include "stm32f10x.h"
  2. #include "pwm.h"
  3. #include "gpio.h"
  4. #include "delay.h"
  5. #include "system.h"
  6. #include "motor.h"
  7. #include "usart1.h"
  8. #include "usart3.h"
  9. //GPIO_SetBits(GPIOC,GPIO_Pin_4);                                                 //PC.4 输出高

  10. #define KEY1  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)
  11. #define KEY2  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)

  12. int res=0x61;
  13. void USART3_Init(void);
  14. void GPIOdianji_Init(void);
  15. void TIM2_PWM_Init(u16 arr,u16 psc);


  16. int main(void)
  17. {       
  18.      KEY_Init();
  19.          GPIOdianji_Init();
  20. //         USART1_Init();
  21.           NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断函数  设置响应优先级为2
  22.          delay_init(10);
  23.          
  24.          
  25.          
  26.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断函数  设置响应优先级为2
  27.          USART3_Init();
  28.        
  29.          TIM2_PWM_Init(1999,719);
  30.          
  31.          while(1)
  32.          {
  33. //         car_speed();         
  34. //         if(res==0x31)
  35. //                 {
  36. //                     forward();
  37. //                         car_speed();
  38. //                 }
  39. //                 
  40. //         if(res==0x32)
  41. //                 {
  42. //                     back();
  43. //                         car_speed();
  44. //                 }
  45. //                 
  46. //        if(res==0x33)
  47. //                 {
  48. //                     left();
  49. //                         car_speed();
  50. //                 }
  51. //                 
  52. //        if(res==0x34)
  53. //                 {
  54. //                     right();
  55. //                         car_speed();
  56. //                 }
  57. //                 
  58. //        if(res==0x61)
  59. //                 {
  60. //                     stop();
  61. //                         car_speed();
  62. //                 }
  63.     if(KEY1==0)
  64.                  {
  65.                      right();
  66.                          car_speed();
  67.                  }
  68.         if(KEY2==0)
  69.                  {
  70.                      stop();
  71.                  }
  72.         if(KEY1==1)
  73.         {
  74.         stop();
  75.         }
  76.          
  77.         }
  78. }
复制代码
KEY1和KEY2是测试小车能不能转动用的,使用的是l298n上的6个引脚,IN1234负责电机转动方向和停止,ENA和ENB负责调整转速,蓝牙使用的是串口3,carspeed函数就是控制转速,里面是四个轮子对应的四个通道:
void car_speed(void)
{
    TIM_SetCompare1(TIM2,1200);
        TIM_SetCompare2(TIM2,1200);
        TIM_SetCompare3(TIM2,750);
        TIM_SetCompare4(TIM2,750);
}

forward,back,left,right和stop是控制IN1234
  1. #include "usart3.h"
  2. #include "stm32f10x.h"
  3. #include "motor.h"
  4. #include "pwm.h"
  5. #include "delay.h"
  6. void USART3_Init(void)
  7. {
  8.     USART_InitTypeDef USART_InitStrue;  
  9.     NVIC_InitTypeDef NVIC_InitStrue;  
  10.         GPIO_InitTypeDef GPIO_InitStructure;
  11.        
  12.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//串口端口使能
  13.        
  14.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB.10   TX接蓝牙RX
  15.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  16.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
  17.     GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PA9
  18.    
  19.     //USART1_RX          PA.10
  20.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;    //RX 接蓝牙TX
  21.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  22.     GPIO_Init(GPIOB, &GPIO_InitStructure);  //初始化PB11
  23.        
  24.         USART_InitStrue.USART_BaudRate=9600;  
  25.     USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  
  26.     USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  
  27.     USART_InitStrue.USART_Parity=USART_Parity_No;  
  28.     USART_InitStrue.USART_StopBits=USART_StopBits_1;  
  29.     USART_InitStrue.USART_WordLength=USART_WordLength_8b;  

  30.         USART_Init(USART3,&USART_InitStrue);
  31.       
  32.     USART_Cmd(USART3,ENABLE);//使能串口1  
  33.       
  34.     USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//开启接收中断  
  35.       
  36.     NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;  
  37.     NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  
  38.     NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;  
  39.     NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  
  40.     NVIC_Init(&NVIC_InitStrue);  
  41. }
  42. extern int res;
  43. void USART3_IRQHandler(void) // 串口3中断服务函数
  44. {
  45.        
  46.         if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET) // 中断标志
  47.         {       
  48.                 res= USART_ReceiveData(USART3);  // 串口2 接收
  49.                 switch(res)
  50.                 {
  51.                     case 0x61:delay_ms(50);car_speed();stop();   break;
  52.                         case 0x31:delay_ms(50);car_speed();forward();break;
  53.                         case 0x32:delay_ms(50);car_speed();back();   break;
  54.                         case 0x33:delay_ms(50);car_speed();left();   break;
  55.                         case 0x34:delay_ms(50);car_speed();right();  break;
  56.                 }
  57.         }
  58.         USART_SendData(USART3,res);   // 串口2 发送
  59. //                USART_ClearITPendingBit(USART3,USART_ReceiveData(USART3));
  60.         USART_ClearFlag(USART3,USART_FLAG_TC);
  61. }


复制代码

这个是串口3的配置,手机可以成功连接蓝牙,但是输入输出东西用串口调试助手就没有反应。
程序没有错误没有警告。
求大神指点。
谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表