我在UART上连接到mcu的传感器。传感器输出ascii字符。下面是我从uart(传感器)读取和从uart(通过putty到我的计算机)写入的函数。
我的问题是,我是否需要将ascii字符转换为类型uint8_t
以写入uart,因为这是putchar()所需要的?有腻子显示。
答案 0 :(得分:1)
类型uint8_t
是unsigned char
的typedef,需要与signed char
或普通char
具有相同的布局。
因此,您可以在uint8_t
和char
之间或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上,所以我在这里非常安全。