今天刷嵌入式三级题,发现一个 void UART0_Init() 函数中,在初始化 rGPHCON 时,
是这样的:
rGPHCON = (rGPHCON&0xFFFFFF00) | 0x000000AA; // 端口H相应引脚功能初始化.
展开其实就是将 GPH3[7:6], GPH2[5:4], GPH1[3:2], GPH0[1:0]
这四个引脚设置为 : 1:0 1:0 1:0 1:0
GPH3和GPH2我能理解,是将引脚使能为RXD0 和 TXD0 功能。
但是, GPH1 和 GPH0也使能了,一翻数据手册才发现,使能为 nRTS0 和 nCTS0功能。
这才知道原来这是硬件上的原因,nRTS0和 nCTS0 其实就是标准9针串口中的RTS 和 CTS,前面小写的n代表低电平有效。
RTS表示请求发送信号,由终端告诉主机,现在可以向我传输数据了。
CTS表示清除发送信号,由主机告诉终端,我要向你发送数据了。
结论: 虽然UART通信看起来只用了两根线,但是在很多场合,可能还会有很多辅助
的引脚也需要使能,细节掌握的清楚,题目才能做对,对日后开发也有益处。
希望能对你有所帮助。