[求助] UART 怎么进入发送中断?【菜鸟求助】

emdgbx   2014-12-5 13:57 楼主

UART 的发送中断是要靠软件设置一个标志位才进入中断,还是只要程序中把数据放到TXBUF里就会有中断呢?

比如我一个单片机通过键盘修改了一个变量,需要把这个变量值通过串口发送给另一个单片机。这个接收和发送中断应该怎么设置呢?

谢谢各位帮忙!

回复评论 (5)

往TXBUF输入数据,当数据传输完成之后,会有标志位产生。如果这个时候已经使能全局中断位GIE和串口发送中断位UCTXIE,就会产生一个串口发送完成中断。接收中断同理。
点赞  2014-12-5 14:19
引用: a2656693 发表于 2014-12-5 14:19
往TXBUF输入数据,当数据传输完成之后,会有标志位产生。如果这个时候已经使能全局中断位GIE和串口发送中断位UCTXIE,就会产生一个串口发送完成中断。接收中断同理。
非常感谢回答,那如果已经发送完整了,数据已经被送到另一个单片机,那此时还产生发送中断是做什么用的呀?
点赞  2014-12-5 14:33
引用: emdgbx 发表于 2014-12-5 14:33
非常感谢回答,那如果已经发送完整了,数据已经被送到另一个单片机,那此时还产生发送中断是做什么用的呀?
如果你需要发送一个字符串,但是串口缓冲区一次只能存一个字节,所以需要一个字节一个字节的发。发送完成产生中断可以发送下一字节。如果你程序需要知道你发送完成了,也可以通过这个中断来实现。

如果你需要用到低功耗特性,在将数据写入串口缓冲区后,可以让CPU休眠,这个中断此时可以用于唤醒单片机继续执行下面的任务。
点赞  2014-12-5 17:22
GAINSPAN无线模块,有需要联系我~
点赞  2014-12-9 17:29
引用: qiushenghua 发表于 2014-12-5 17:22
如果你需要发送一个字符串,但是串口缓冲区一次只能存一个字节,所以需要一个字节一个字节的发。发送完成产 ...

中断发送中TXBUF0一次只能存一个字节,当这一个字节存满的时候是不是就开始发送了?我在外面做一个单个字节发送函数Send_Char()
void Send_Char(unsigned char Ch)          //发送一个字节
{
  TXBUF0=Ch;
  while(!(IFG1&UTXIFG0));               
  IFG1&=~UTXIFG0;                        
}
那么在中断发送里面可不可以直接调用,怎么调用呢?以前都是直接都是利用这种查询法发送,没有用过
中断发送,对中断发送一点都不了解,希望能得到你的帮助。
点赞  2016-7-22 11:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复