Я пытаюсь отправить один символ («A») на свой STM32 с моего ESP32. Я вижу, что char проходит, когда я получаю char обратно на ESP32 в последовательном мониторе Arduino, но я не могу понять, как получить к нему доступ, чтобы использовать его для чего-то еще на STM32. Вот что я пытался...
//STM32 Code:
uint8_t RxTx_1[100];
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Receive(&huart1, (uint8_t*)RxTx_1, sizeof(RxTx_1), 100); // Receive comms from ESP32
if (RxTx_1[0] = "A"){
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // Blink
HAL_Delay(1000);
}
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, (uint8_t*)RxTx_1, sizeof(RxTx_1), 100);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
Я знаю, что это должно быть что-то простое, но я не могу найти ничего в Интернете о том, как это сделать.
Мне очень жаль, похоже, я не инициализировал светодиод, который использовал для отладки, поскольку я уже пробовал это. Все равно спасибо!
Ваш компилятор, вероятно, сказал вам что-то вроде «предупреждение: сравнение между указателем и целым числом», и вы это проигнорировали. Пожалуйста, не делай этого. На самом деле, пожалуйста, добавьте -Werror к флагам вашего компилятора, чтобы вы не могли игнорировать его в будущем.





Чтобы расширить комментарий от @πάντα ῥεῖ:
"A" — строковый литерал типа const char[N]. Конкретно это строка/массив {'A', '\0'} (помните завершающий нулевой символ). Итак, if (RxTx_1[0] = "A") сравнивает ваш Rx char с указателем.
'A' — это персонаж A с типом char, и if (RxTx_1[0] == 'A') делает то, что вы хотите.
if (RxTx_1[0] = "A"){должно бытьif (RxTx_1[0] == 'A'){