ST意法半导体
直播中

王尚岱

8年用户 1483经验值
擅长:电源/新能源
私信 关注
[问答]

小白求助怎样通过UART将所有数据发送到PC上呢?

我正在使用 STM32 NUCLEO F401RE 板使用 UART Printf 将多个数据发送到 PC。
我为不同的计算创建了不同的任务(4 个任务),最后创建了一个专用任务来发送所有计算的数据,这些数据将使用 Printf 通过 UART 发送。
例如,一个任务运行 PWM 和 ADC,另一个任务使用 I2C,第三个任务使用 UART1。
问题在于发送多个数据会导致任务行为异常并且无法正确进行计算。
我总共有 8 个整数值,1 个浮点值。例如,当我尝试使用多个 printf 命令发送所有这些数据时,带有 ADC 的任务给出了不正确的 ADC 采样值。
当我不使用 printf 命令时,任务正常工作,但我需要通过 UART 将所有数据发送到 PC。
要使用 Printf ,我使用以下代码
#ifdef __GNUC__
        
        #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
        
        #别的
        #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
        
        #endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
        HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
        返回 ch;
}









回帖(1)

甘晓茵

2023-1-4 09:41:39
也许 UART 连接是瓶颈。您要传输多少数据与可用的最大带宽?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分