1

我正在使用STM32F4073 HC-05蓝牙模块。我正在尝试同时使用 1 个主设备和 2 个从设备。我可以将任何从站连接到主站。我正在尝试为 2 个奴隶实现一个简单的算法。我每隔 10 秒更改一次连接主机的设备地址。当我尝试同时连接它们时,我的主机始终处于 AT 模式。它不会永远快速闪烁(当它快速闪烁时,表示它不在 AT 模式下并正在搜索设备)。我的奴隶也发送数据。师父有什么问题?
这是数据表

int main(void)
{
  /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_USART6_UART_Init();
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); //Reset HC-05
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);// set high to 'key' pin  to enter AT Mode
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//set low to reset pin
    HAL_Delay(3000);
    HAL_UART_Transmit(&huart6,(uint8_t*)"AT+ROLE=1\r\n",sizeof("AT+ROLE=1\r\n")-1,100);
    HAL_Delay(1000);
    HAL_UART_Transmit(&huart6(uint8_t*)"AT+CMODE=0\r\n",sizeof("AT+CMODE=0\r\n")-1,100);
    HAL_Delay(1000);

    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode
    /* USER CODE BEGIN 2 */
    __HAL_UART_ENABLE_IT(&huart6,UART_IT_RXNE); //enable usart interrupt
  /* USER CODE END 2 */

  while (1)
  {
       /* FIRST SLAVE */
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//i entered AT mode to change slave addres
    HAL_UART_Transmit(&huart6(uint8_t*)"AT+BIND=98D3,31,F63543\r\n",sizeof("AT+BIND=98D3,31,F63543\r\n")-1,100); //address of slave
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode

     HAL_Delay(50000);//wait for data transmission

        /*SECOND SLAVE */
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);
    HAL_Delay(1000);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//i entered AT mode to change slave addres
    HAL_UART_Transmit(&huart6(uint8_t*)"AT+BIND=98D3:31:F537A2\r\n",sizeof("AT+BIND=98D3:31:F537A2\r\n")-1,100); //address of slave
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode

     HAL_Delay(50000);//wait for data transmission
 }
}

从站配置:

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);// reset hc-05
delay_ms(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);// set high to 'key' pin  to enter AT
delay_ms(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);// entered AT mode 
delay_ms(3000);
HAL_UART_Transmit(&huart1,(uint8_t*)"AT+ROLE=0\r\n",sizeof("AT+ROLE=0\r\n")-1,100);
delay_ms(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);//exit AT mode
4

0 回答 0