打印
[Kinetis]

有没有KL25z UART 用中断方式发送数据的例子

[复制链接]
2007|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ar_m_cu|  楼主 | 2013-12-16 14:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本人在写UART程序的时候想用中断方式发送数据
中断程序如下:
void Uart0Irq(void)
{
  if(UART_GetTxCompleteStatus(UART0) != 0)
  {
    UartInfo[0].snt_index++;
    if(UartInfo[0].snt_index < UartInfo[0].snt_max)
      UART_WriteDataReg(UART0,UartInfo[0].snt_data[UartInfo[0].snt_index]);
    else
      UartInfo[0].flags |= UART_TCOMPLETE_FLAG;
  }
}
但是跑起来的时候程序一直在中断里面出不来。看数据手册发现,UART在空闲的 时候发送完成标志一直处于设置状态,导致程序不停的进出中断。也就红色部分需要添加一个清除发送完成标志的语句,但是不知道该怎么清除这个标志,求大神

相关帖子

沙发
FSL_TICS_Admin| | 2013-12-16 15:10 | 只看该作者
进中断之后可以通过这个语句(UARTx_S1 & 0x20)来判断是不是UART的收中断.如果是传输中断产生后,可以通过读UARTx_S1来清掉发中断.

使用特权

评论回复
板凳
ar_m_cu|  楼主 | 2013-12-16 15:14 | 只看该作者
FSL_TICS_Admin 发表于 2013-12-16 15:10
进中断之后可以通过这个语句(UARTx_S1 & 0x20)来判断是不是UART的收中断.如果是传输中断产生后,可以通过读U ...

我是想调试UART的发送中断,不是接收

使用特权

评论回复
地板
FSL_TICS_Robin| | 2013-12-16 15:19 | 只看该作者
你可以尝试下参考手册中TC位说明的操作。

使用特权

评论回复
5
ar_m_cu|  楼主 | 2013-12-16 15:22 | 只看该作者
本帖最后由 ar_m_cu 于 2013-12-16 15:23 编辑
FSL_TICS_Robin 发表于 2013-12-16 15:19
你可以尝试下参考手册中TC位说明的操作。

我就是按照这个说明操作的,对于没有发送完数据的时候挺正常的,但是发送完数据后,该怎么清除呢?红线后面的两个条件不太懂

使用特权

评论回复
6
FSL_TICS_Robin| | 2013-12-16 15:32 | 只看该作者
ar_m_cu 发表于 2013-12-16 15:22
我就是按照这个说明操作的,对于没有发送完数据的时候挺正常的,但是发送完数据后,该怎么清除呢?红线后 ...

后面两个你应该用不到,那些是针对发全1和全0的。
你发送完后不想再进发送中断,就禁止发送中断吧。

使用特权

评论回复
7
ar_m_cu|  楼主 | 2013-12-16 16:27 | 只看该作者
FSL_TICS_Robin 发表于 2013-12-16 15:32
后面两个你应该用不到,那些是针对发全1和全0的。
你发送完后不想再进发送中断,就禁止发送中断吧。 ...

恩,这倒是个办法,也就是说每次发送数据的时候打开中断,一旦发送完成就关掉中断。我试试,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:初出茅庐,天下无敌,再学三年,寸步难行

61

主题

1200

帖子

7

粉丝