Почему при первом запуске кода происходит сбой последовательной связи через BLE, но он работает нормально для последовательных запусков? - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь связаться с микроконтроллером STM32 через последовательную связь. До того, как я использовал USB-кабель, связь работала безупречно. Однако, когда я переключил тот же последовательный режим с USB на BLE (HM-10), микроконтроллер не отвечает правильно с первой попытки, но после этого все в порядке. В чем может быть проблема?

Я попытался найти, было ли это связано с буферами или стартовыми / стоповыми битами. Но это мне не сильно помогло, потому что я понятия не имел о том, как реализовать их через код. Я использую MbedOS для программирования своей платы разработчика.

КОД:

#include "mbed.h"

DigitalOut led1(LED1);

 #define MAX_INPUT_LENGTH 2

int code[MAX_INPUT_LENGTH];

Serial bt(PD_5, PD_6);

//Serial pc(USBTX, USBRX);

int main()

{

    while(1)
    {
        while(bt.readable()==1)
        {
            volatile char str[2];

            bt.scanf("%2s",str);  

                int index = 0;
                while(index<=MAX_INPUT_LENGTH)
                {                                                                
                    code[index] = str[index] - '0';                            // convert to an int.
                    index++;                                                // increase the index.
                }

            if(code[0]==0 && code[1]==1)
            {
                bt.printf("\n01 RECIEVED.");
                for(int x=0;x<15;x++)
                {
                    led1 = 1;
                    wait(0.25);
                    led1 = 0;
                    wait(0.25);
                }
            }
            else
                bt.printf("\nINCORRECT VALUE RECIEVED.");
        }
    }    
}

Я ожидал, что выходные данные ble serial будут работать так же, как и usb serial, но при первом запуске он не получился.

...