一、准备工作
功能:用APP控制STM32F103单片机上的部件如:LED小灯,蜂鸣器。。
硬件:蓝牙模块、STM32F103战舰(或其他单片机)、手机一部
软件:AppInventor(网上下载,不能放在有中文的文件夹中,否则报错)
二、功能实现
蓝牙模块:连接HC-05 VCC GND TX(接单片机RXD) RX(TXD)打开蓝牙串口通信助手(正点原子A盘增值资料里有)
此时,蓝牙的小灯会以慢闪的形式亮灭。我这里,接的是串口PB10和PB11。

代码如下:重点是需要打开第二个串口 uart3.c、timer.c均可在增值资料的蓝牙HC-05中找到
#include “led.h”
#include “delay.h”
#include “key.h”
#include “sys.h”
#include “usart.h”
#include “usart3.h”
#include “beep.h”
#include “string.h”
int main(void)
{
u16 t;
u16 len;
u16 reclen;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usart3_init(9600); //初始化串口2为:9600,波特率。
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
BEEP_Init(); //初始化蜂鸣器端口
USART3_RX_STA=0;
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf(“rn您发送的消息为:rnrn”);
for(t=0;t《len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf(“rnrn”);//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf(“rn战舰STM32开发板 串口实验rn”);
printf(“正点原子@ALIENTEKrnrn”);
}
if(times%200==0)printf(“请输入数据,以回车键结束n”);
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行。
delay_ms(10);
}
if(USART3_RX_STA&0X8000) //接收到一次数据了
{
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
if(reclen==3) //控制DS1检测
{
if(strcmp((const char*)USART3_RX_BUF,“LED”)==0)
{
LED1=!LED1;
}
}
if(strcmp((const char*)USART3_RX_BUF,“BEEP”)==0)
{
BEEP=!BEEP;
}
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
USART3_RX_STA=0;
}
}
}
三、APP的制作
使用app inventor:

APP制作完成后~下载到手机、打开APP 同时按选择蓝牙设备即可连接蓝牙。。其余按对应按键即可。
一、准备工作
功能:用APP控制STM32F103单片机上的部件如:LED小灯,蜂鸣器。。
硬件:蓝牙模块、STM32F103战舰(或其他单片机)、手机一部
软件:AppInventor(网上下载,不能放在有中文的文件夹中,否则报错)
二、功能实现
蓝牙模块:连接HC-05 VCC GND TX(接单片机RXD) RX(TXD)打开蓝牙串口通信助手(正点原子A盘增值资料里有)
此时,蓝牙的小灯会以慢闪的形式亮灭。我这里,接的是串口PB10和PB11。

代码如下:重点是需要打开第二个串口 uart3.c、timer.c均可在增值资料的蓝牙HC-05中找到
#include “led.h”
#include “delay.h”
#include “key.h”
#include “sys.h”
#include “usart.h”
#include “usart3.h”
#include “beep.h”
#include “string.h”
int main(void)
{
u16 t;
u16 len;
u16 reclen;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usart3_init(9600); //初始化串口2为:9600,波特率。
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
BEEP_Init(); //初始化蜂鸣器端口
USART3_RX_STA=0;
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf(“rn您发送的消息为:rnrn”);
for(t=0;t《len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf(“rnrn”);//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf(“rn战舰STM32开发板 串口实验rn”);
printf(“正点原子@ALIENTEKrnrn”);
}
if(times%200==0)printf(“请输入数据,以回车键结束n”);
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行。
delay_ms(10);
}
if(USART3_RX_STA&0X8000) //接收到一次数据了
{
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
if(reclen==3) //控制DS1检测
{
if(strcmp((const char*)USART3_RX_BUF,“LED”)==0)
{
LED1=!LED1;
}
}
if(strcmp((const char*)USART3_RX_BUF,“BEEP”)==0)
{
BEEP=!BEEP;
}
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
USART3_RX_STA=0;
}
}
}
三、APP的制作
使用app inventor:

APP制作完成后~下载到手机、打开APP 同时按选择蓝牙设备即可连接蓝牙。。其余按对应按键即可。
举报