第一个蓝牙控制系统

3 篇文章 1 订阅
2 篇文章 0 订阅

参考资料
android部分
亚博安卓蓝牙简版源码
Android开发从入门到精通(项目案例版)
TM4C123G学习推荐博主
透明橡皮
Attackoncc

欢迎大佬修改指正,感激不尽。

第一部分 硬件介绍

我用的是hc-05模块+TI的TM4C123G学习板
蓝牙模块网上有好多,这里推荐【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)

下面我着重来介绍TM4C123G学习板蓝牙部分代码的编写
废话不多,上代码
c文件

int num = 0;                        //用来记数组位数的
uint8_t  startBit_ble = 0;          //开始接受数据标志位
uint16_t intpurBleString[80] = {0}; //用来存储蓝牙接受的数据的
uint16_t BleBit = 0;                //接受蓝牙发送的数据

//中断服务函数
void BleIntHandler(void)
{
  uint32_t flag = UARTIntStatus(BLE_UART_BASE,1);
  UARTIntClear(BLE_UART_BASE,flag);  //清除中断标志
  BleBit =UARTCharGet(BLE_UART_BASE); //读取接收到的数据
 
  if(BleBit == '$')  //读取开始位
     {
        startBit_ble = 1;
        num = 0;
     }
  if(startBit_ble == 1)
     {
         intpurBleString[num] = BleBit;     
     }  
  if (startBit_ble == 1 && BleBit == '#') //读到了停止位
     {  
    	 startBit_ble = 0;
     }
     
  num++;
  
  if(num >= 80)      //阈值
    {
	   num = 0;
	   startBit_ble = 0;
    }   
}

//蓝牙串口初始化
void BLE_Init(void)
{
 //使能UART外设
 SysCtlPeripheralEnable(SYSCTL_PERIPH_BLE);
 //使能GPIO外设
 SysCtlPeripheralEnable(SYSCTL_PERIPH_BLE_GPIO);
 //GPIO复用模式配置,解锁引脚
 HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
 HWREG(GPIO_PORTD_BASE + GPIO_O_CR) = 0xFF;
 
 GPIOPinConfigure(BLE_GPIO_RX);
 GPIOPinConfigure(BLE_GPIO_TX);
 GPIOPinTypeUART(BLE_GPIO_BASE, BLE_GPIO_PIN_RX |BLE_GPIO_PIN_TX);
 //uart配置 波特率:115200 8位 1位停止位 无校验,一般蓝牙模块默认的波特率为9600记得修改
 UARTConfigSetExpClk(BLE_UART_BASE, SysCtlClockGet(),
                    BLE_BAUD, (UART_CONFIG_WLEN_8 |UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));
 
 //UART禁用FIFO 默认FIFO Level为4/8 寄存器满8字节后产生中断
 //禁用后接收1位就产生中断
 UARTFIFODisable(BLE_GPIO_BASE);
 //使能UART2中断
 IntEnable(BLE_INT_UART);
 //使能UART2接收中断
 UARTIntEnable(BLE_UART_BASE,UART_INT_RX |UART_INT_RT);
 //UART中断地址注册
 UARTIntRegister(BLE_UART_BASE,BleIntHandler);
 //优先级
 IntPrioritySet(BLE_INT_UART, 3);
}
//发送数据
void BLE_sendware(char *wareaddr, uint32_t waresize)
{
   usart_ble_putbuff(wareaddr, waresize);
}
//打包
void usart_ble_putbuff(char *buff, uint32_t len)
{
   UARTCharPut(UART2_BASE,'$')while(len--)
      {
	  UARTCharPut(UART2_BASE,*buff);
	  buff++;
      }
   UARTCharPut(UART2_BASE,'#');
 }

头文件

#ifndef  __BLE_H
#define  __BLE_H
//时钟
#define SYSCTL_PERIPH_BLE           SYSCTL_PERIPH_UART2
#define SYSCTL_PERIPH_BLE_GPIO      SYSCTL_PERIPH_GPIOD
//串口号
#define BLE_UART_BASE               UART2_BASE
#define BLE_INT_UART                INT_UART2
//管脚
#define BLE_GPIO_BASE               GPIO_PORTD_BASE
#define BLE_GPIO_RX                 GPIO_PD6_U2RX
#define BLE_GPIO_TX                 GPIO_PD7_U2TX
#define BLE_GPIO_PIN_RX             GPIO_PIN_6
#define BLE_GPIO_PIN_TX             GPIO_PIN_7
//波特率
#define BLE_BAUD                    115200

void BLE_Init(void);
void BLE_sendware(char *wareaddr, uint32_t waresize);
void test(void);
#endif

对于蓝牙串口初始化不明白的同学可以参考TM4C123GLaunchPad教程五_UART

完整版可以参考我的Github或者TM4C123G蓝牙.zip

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值