我是否需要将ascii转换为uint8_t才能在uart(putty)上编写和显示

时间:2016-02-10 11:07:19

标签: c function ascii uart

我在UART上连接到mcu的传感器。传感器输出ascii字符。下面是我从uart(传感器)读取和从uart(通过putty到我的计算机)写入的函数。

我的问题是,我是否需要将ascii字符转换为类型uint8_t以写入uart,因为这是putchar()所需要的?有腻子显示。

1 个答案:

答案 0 :(得分:1)

类型uint8_tunsigned char的typedef,需要与signed char或普通char具有相同的布局。

因此,您可以在uint8_tchar之间或uint8_t*char*之间自由投射,一切都会正常工作。

但是,您无法在int*uint8_t*之间进行投射,因为基本类型的大小不同。

我的建议是写一些类似的东西:

void putcchar(uint8_t c) {
  ti_uart_write_buffer(TI_UART_0, &c, 1);
}

然后直接调用它:

int l = getch();
putcchar(l);

请注意,getch()只返回int而不是char只是为了能够返回EOF,因此转换为char将是安全的< em>除非是EOF。您可能想要添加:

int l = getch();
if (l == EOF) break;
putcchar(l);

只要您将char/uint8_t值视为二进制字节或ASCII字符,就是如此。如果您碰巧有非ASCII字符(例如'é'),那么您需要考虑字符编码。

PS :我假设您正在为程序使用普通架构,即字节长度为8位且字符编码基于ASCII 。由于你使用的是Putty,你可能在MS-Windows上,所以我在这里非常安全。