使用的板子是AMB23,如果一帧数据大于66字节的话,同样的程序使用serial1就可以接收到完整的串口数据,但是替换成serial2就只能接收到一部分数据。
arduino是3.1.6
serial2使用的是PB1和PB2。
以下是接收串口的数据的代码。
void threadB(void* pvParameters) {
int recv_length;
uint8_t recv_buff[1024];
for (;;) {
recv_length = Serial2.available();
if(recv_length>0)
{
Serial2.readBytes(recv_buff,recv_length);
if(loss_link_count < 200)
{
client.write(recv_buff,recv_length);
}
Serial.print("uart: ");
Serial.print(recv_length);
Serial.print(" ");
Serial.println(recv_buff[0],HEX);
}
else
{
delay(5);
}
}
}
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
Serial2.begin(2000000);
while (!Serial) {
;
}
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
retry_time++;
Serial.print("\r\nRetry ");
Serial.print(retry_time);
Serial.println(" times");
// wait 10 seconds for connection:
delay(10000);
if(retry_time>=3) break;
}
if(3 <= retry_time)
{
Serial.println("First Connected Failed");
}
else
{
Serial.println("Connected to wifi");
printWifiStatus();
Serial.println("\nStarting connection to server...");
// if you get a connection, report back via serial:
if (client.connect(server, 8888)) {
Serial.println("connected to server");
}
}
delay(100);
xTaskCreate(threadA, "Task A", 1024, NULL, tskIDLE_PRIORITY + 2, &Handle_aTask);
xTaskCreate(threadB, "Task B", 1024, NULL, tskIDLE_PRIORITY + 3, &Handle_bTask);
}