提问人:Tobias 提问时间:11/14/2023 最后编辑:Tobias 更新时间:11/16/2023 访问量:58
通过UART通信STM32 Nucleo L476和Arduino UNO R3 [已关闭]
Communication STM32 Nucleo L476 and Arduino UNO R3 over UART [closed]
问:
我想使用 UART 通信将测试字符串从 Arduino UNO R3 发送到 STM32 Nucleo L476。 我想做什么: Arduino发送字符串 Nucleo 接收 Nucleo 使用 USB/TTL 转换器将其发送回 PC/Putty。
我使用的UART端口都已配置并设置为9600波特(在CubeIDE,Arduino和USB / TLL Devicemanager中)
已检查正确的 COM 端口。
如果我单独测试每个板的通信(通过 USB/TTL 与 PC 通信),它正在工作并且我收到测试字符串。
如果我在 UART 句柄中使用延迟时间和超时,则 Puttys 光标正在移动,但只显示一个神秘的标志。
我在arduino中使用以下草图:
void setup() {
// Initialisiere die serielle Schnittstelle mit einer Baudrate von 9600
Serial.begin(9600);
}
void loop() {
// Sende den Text "Hallo Welt" über die serielle Schnittstelle
Serial.println("A");
delay(2000);
Serial.println("B");
delay(2000);
Serial.println("c");
// Warte für eine Sekunde (1000 Millisekunden)
delay(2000);
}
我在 CubeIDE 中使用以下代码:
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include <string.h>
uint8_t stringbuf[3];
uint8_t tr_stringbuf[3];
int main(void)
{
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_USART1_UART_Init();
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
//Receive Arduino
HAL_UART_Receive(&huart2, (uint8_t *)stringbuf, 3, 6000);
HAL_Delay(500);
//Copy Received Value
uint8_t tr_stringbuf[3]={stringbuf[0], stringbuf[1],
stringbuf[2]};
//kopierten Wert weiterschicken
HAL_UART_Transmit(&huart1, (uint8_t *)tr_stringbuf, 3, 4000);
//TogglePin
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // Toggle LD2 LED
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
答: 暂无答案
评论