使用MM32F5333所配备的串行通讯功能可实现数据的收发,其测试结果如图1所示。
![image.png image.png](data/attachment/forum/202401/07/212411pwm0xlz0mvgwwfwt.png)
图1 收发测试
进行收发测试的程序为:
oidUSART_Polling_Sample(void)复制代码
{
uint8_t Data = 0;
printf("\r\nTest %s", __FUNCTION__);
USART_Configure(115200);
while (1)
{
if (SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
{
Data = USART_ReceiveData(USART1);
USART_SendData(USART1, Data);
while (RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC));
}
}
}
在此基础上将串口与基于KT6368A的功能模块相配合,即可实现以蓝牙通讯来控制外部设备。KT6368A功能模块如图2所示,通过与USB转TTL模块的连接可进行基本的测试。
![image.png image.png](data/attachment/forum/202401/07/212530hvvp6vopbb6m6ptp.png)
图2 功能模块
![image.png image.png](data/attachment/forum/202401/07/212607rscxxzl0kpzrjrcx.png)
图3 连接形式
若手机装有小程序LightBlue,则可搜寻到该蓝牙设备,见图4所示。
![image.png image.png](data/attachment/forum/202401/07/212631rr6oxz6v7wzlzhvv.png)
图4 连接测试
通过LightBlue可进行数据的收发测试,见图5和图6所示。
![image.png image.png](data/attachment/forum/202401/07/212710i8d5r33n7ig8g7rd.png)
图5 发送数据
![image.png image.png](data/attachment/forum/202401/07/212750ugd3huga3at99cc3.png)
图6 接收数据
以此为基础,若将串口通信模块替换为Mini-F5333开发板,即可进行蓝牙通讯的控制功能。
为简化设计的复杂度,这里以板载的4个LED为控制对象,并以指定的控制码来控制其亮灭。
![image.png image.png](data/attachment/forum/202401/07/212829f4nqnni9zxoinjjx.png)
图7 LED电路
实现蓝牙通讯控制LED的主程序为:
voidUSART_Polling_Sample(void)
{
uint8_t Data = 0;
USART_Configure(115200);
while (1)
{
if (SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
{
Data = USART_ReceiveData(USART1);
if(Data==0)
{
PLATFORM_LED_Enable(LED1, DISABLE);
PLATFORM_LED_Enable(LED2, DISABLE);
PLATFORM_LED_Enable(LED3, DISABLE);
PLATFORM_LED_Enable(LED4, DISABLE);
}
if(Data==1)
{
PLATFORM_LED_Enable(LED1, ENABLE);
PLATFORM_LED_Enable(LED2, DISABLE);
PLATFORM_LED_Enable(LED3, DISABLE);
PLATFORM_LED_Enable(LED4, DISABLE);
}
if(Data==2)
{
PLATFORM_LED_Enable(LED1, DISABLE);
PLATFORM_LED_Enable(LED2, ENABLE);
PLATFORM_LED_Enable(LED3, DISABLE);
PLATFORM_LED_Enable(LED4, DISABLE);
}
if(Data==3)
{
PLATFORM_LED_Enable(LED1, DISABLE);
PLATFORM_LED_Enable(LED2, DISABLE);
PLATFORM_LED_Enable(LED3, ENABLE);
PLATFORM_LED_Enable(LED4, DISABLE);
}
if(Data==4)
{
PLATFORM_LED_Enable(LED1, DISABLE);
PLATFORM_LED_Enable(LED2, DISABLE);
PLATFORM_LED_Enable(LED3, DISABLE);
PLATFORM_LED_Enable(LED4, ENABLE);
}
if(Data==5)
{
PLATFORM_LED_Enable(LED1, ENABLE);
PLATFORM_LED_Enable(LED2, ENABLE);
PLATFORM_LED_Enable(LED3, ENABLE);
PLATFORM_LED_Enable(LED4, ENABLE);
}
while (RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC));
}
PLATFORM_DelayMS(100);
}
}
复制代码经程序的编译和下载,其控制效果如图7所示,即依次方式0、1、2、3、4、5,可关闭LED、点亮LED1、点亮LED2点亮、LED3点亮LED4及电路全部LED。
![image.png image.png](data/attachment/forum/202401/07/213019daacm35c5efj6f31.png)
图8 控制效果
演示视频: