打印
[STM32WB]

【STM32WB09KE测评】+蓝牙控制外设

[复制链接]
40|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在厂家提供的例程中,有进行蓝牙通讯的程序框架,其工程名称为BLE_SerialPort_Server”。
该程序的用途是在蓝牙接收到指定长度的字节数据后,通过串口来输出接收的数据,其输出接收数据的函数为:
void Data_Received(uint16_t length, uint8_t *data)
{
  for(uint16_t i = 0U; i < length; i++)
  {
    printf("%c", data[i]);
  }  
}

为了以蓝牙通讯的方式来控制外观的LED模块和风扇模块,是将LED模块连接到PB1,将风扇模块连接到PB2
1 引脚接口

2 引脚变化关系
对所用引脚的初始化函数为:
void LED_FAN_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStruct;
  __HAL_RCC_GPIOB_CLK_ENABLE();
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOB, &GPIO_Init);
  GPIO_InitStruct.Pin = GPIO_PIN_1;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
}

相应的接收数据控制函数为:
void Data_Received(uint16_t length, uint8_t *data)
{
  if(data[0] == '1')
        {
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
        }
        if(data[0] == '2')
        {                  
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);               
        }
        if(data[0] == '3')
        {                  
                HAL_GPIO_WritePin(GPIOB,  GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,  GPIO_PIN_2, GPIO_PIN_RESET);               
        }
}

相应的主程序为:
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  PeriphCommonClock_Config();
  MX_GPIO_Init();
  MX_RADIO_Init();
  MX_RADIO_TIMER_Init();
  MX_PKA_Init();
LED_FAN_Init();
  while (1)
  {
      MX_APPE_Process();
  }
}

经程序的编译与下载,由手机上的LightBlue小程序可通过发送字节指令来控制外挂模块。
3  发送控制字
在发送字节指令0X31时,LED模块会进行状态转换,见图4和图5所示。
4  熄灭状态

5 点亮状态
在发送字节指令0X32时,风扇模块会进行状态转换,见图6和图7所示。
7 转动状态
在发送字节指令0X33时,则LED和风扇模块均会停止。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

454

主题

2753

帖子

38

粉丝