我正在使用
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;
}