|
虽然经常使用到UART,但今天使用launchpad的来进行串口通信时,发现自己对串口通信,
尤其在串口通信程序编写上,仍是模模糊糊的感觉。
下面是launchpad的一个例程:
- include "msp430g2553.h"
- void main(void)
- {
- WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
复制代码 寄存器配置是理解的。使能接收中断,若接收中断发生,则执行接收中断服务程序USCI0RX_ISR(void);
现在,使用串口调试助手,发送字符'a';
对launchpad而言,接收中断发生,字符'a'进入接收缓冲区,即UCA0RXBUF= ‘a’;
接下执行UCA0TXBUF= UCA0RXBUF,即有UCA0TXBUF='a';
我不理解的是:即使UCA0TXBUF='a',发送缓冲区里有字符'a',但串口发送中断
并没有使能,launchpad并不会向串口调试助手发送数据,又何需判断“数据发送完毕”。
但程序正确的意义就是:串口调试助手给launchpad发送什么,launchpad就返回串口调试助手什么。
脑子里只是知道,应该按下面的方式进行硬件连接。
launchpad | USB转串口 | RXD | TXD | TXD | RXD | 其实,对串口通信的的原理和协议还是囫囵吞枣式的理解,坛友们,能推荐一些比较好的学习资料么?
|
|