这款CW32L012C8T6作为主控芯片的小车,通过串口和蓝牙连接,这款芯片内部集成3个通用异步收发器(UART),支持异步全双工、同步半双工和单线半双工模式,支持硬件数据流 控和多机
通信,还支持 LIN(局域互连网络);可编程数据帧结构,可以通过小数波特率发生器提供宽范围的 波特率选择。内置定时器模块,支持等待超时检测、接收空闲检测、自动波特率检测和通用定时功能。 UART 控制器工作在双时钟域下,允许在深度休眠模式下进行数据的接收,接收完成中断可以唤醒 MCU 回到 运行模式。自带的是一款低功耗蓝牙模块,适用于短距离无线通信。该模块通常被用于各种嵌入式项目,如物联网(IoT)设备、
手机配件、智能家居设备、医疗设备等。
以下是蓝牙模块的一些主要特点和功能:
低功耗: 本模块设计为低能耗,适合电池供电的应用。
- 蓝牙版本: 支持蓝牙4.0或更高版本,能够与大多数蓝牙设备兼容。
- 操作范围: 通常具有较好的无线传输距离,适合各种室内外应用。
- 小尺寸: 模块结构紧凑,便于嵌入到各种设备中。
- 简单接口: 提供UART、SPI等常用接口,便于与微控制器或其他设备进行连接和通信。
- 易于配对: 具备快速配对功能,简化了与其他蓝牙设备的连接过程。
模块图片:

蓝牙接口在
开发板上原理图如下:
由以上原理图可知,蓝牙模块的通讯协议为串口,接到开发板上的PA2和PA3接口,再查询手册可知PA2,PA3复用功能为USART2,如下图
然后把程序烧录进小车,最后需要对上位机就是手机APP程序配置一下,需要将按键设置上对于的指令,我们打开蓝牙调试器这个程序,点击到按钮控制这个界面,勾选上编辑模式,编辑完成后取消勾选编辑模式。

uint8_t car_state;//当前小车状态0停止 1前进 2后退 3左转 4右转 void blue_data_pro(uint8_t data){ switch (data) { case 0xA: speed=150; change_speed_flag=1; break; case 0xB: speed=300; change_speed_flag=1; break; case 0xC: speed=450; change_speed_flag=1; break; case 0xD: speed=600; change_speed_flag=1; break; case 0xE: speed=750; change_speed_flag=1; break; case 0xF: speed=900; change_speed_flag=1; break; case 0x0: car_state=0; change_car_state_flag=1; break; case 0x1: car_state=1; change_car_state_flag=1; break; case 0x2: car_state=2; change_car_state_flag=1; break; case 0x3: car_state=3; change_car_state_flag=1; break; case 0x4: car_state=4; change_car_state_flag=1; break; }}
通过这段代码我们知道了蓝牙控制的指令,前进、后退、左转、右转、停止对应0X01,0X02,0X03,0X04,0X00,速度也是同样如此,我们把这个指令编辑到这个蓝牙编辑界面中,像这样:

每个按键都编辑好对应的指令,这样蓝牙上位机的配置也配置好了,按照这样的步骤,我很流畅的通过蓝牙遥控上了这款CW32L012小车,整个过程还是很顺利的。