MSP430串口采用中断方式发送问题

2019-03-24 09:05发布

自己写的查询法发送数据代码如下:分析一下代码有没有错误?

/*************发送一个字节*********/
void Send_Char(unsigned char Ch)          //发送一个字节
{
  TXBUF0=Ch;
  while(!(IFG1&UTXIFG0));                    //等待发送完毕 !(IFG1&UTXIFG0)为0发送未完成  当!(IFG1&UTXIFG0)为1
  IFG1&=~UTXIFG0;                           //发送标志位清零
}
/**********发送一组字符串*********/      
void Send_String(unsigned char *String)    //发送一组字符串
{
    uchar *P;
    P=String;   
  while(*P!='')
   {
     Send_Char(*P);
     P++;
   }
}


现在想采用中断的方式发送数据,不知道怎么发送,什么时候发送,发送标志如何产生,一头水雾不知道怎么解决  希望贴友们的大力指导。

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lcofjp
1楼-- · 2019-03-24 13:39
中断发送比较复杂,首先要有个队列,要进行队列管理。
发送的时候,把数据放入队列内,然后开发送中断。
队列为空的时候,关中断。
最重要的一点就是要防止变量的写冲突,在写某些共享的变量时要关中断。
yl20084784
2楼-- · 2019-03-24 19:26
 精彩回答 2  元偷偷看……
李嘉辉
3楼-- · 2019-03-25 00:49
lcofjp 发表于 2016-7-22 11:51
中断发送比较复杂,首先要有个队列,要进行队列管理。
发送的时候,把数据放入队列内,然后开发送中断。
...

我可不可以这样理解现在接收到一组数据,把接收到的数据装到一个数组里面,把这个数组里面的数据看成一个队列,可不可以在中断里面这样写
IE1|=UTXIE0;   //发送中断使能
/*#pragma vector=UART0TX_VECTOR
__interrupt void USART0_TXITQ(void)
{  
    TXBUF0=Rebuf[ReLenth];
     ReLenth++;
}
lcofjp
4楼-- · 2019-03-25 03:27
李嘉辉 发表于 2016-7-22 12:08
我可不可以这样理解现在接收到一组数据,把接收到的数据装到一个数组里面,把这个数组里面的数据看成一个 ...

像那么个意思,但是不是简简单单几行代码就能搞定的。
李嘉辉
5楼-- · 2019-03-25 07:15
 精彩回答 2  元偷偷看……
李嘉辉
6楼-- · 2019-03-25 07:50
lcofjp 发表于 2016-7-22 12:39
像那么个意思,但是不是简简单单几行代码就能搞定的。

程序一开始运行发送中断使能打开,进入中断因为没有要发的东西有跳出来了,此时标志位UTXIFG0为0,下次进中断的时候要不要再把标志位UTXIFG0=1呢,如果不置为1还会不会进入中断呢?可不可以把这个标志放到发送函数里面,来控制中断的发送?

一周热门 更多>

相关问题

    相关文章