LM3S 串口收发心得

来源:互联网 发布:关闭电脑21端口 编辑:程序博客网 时间:2024/06/18 09:45

        最近项目初学TI  lm3s 系列的mcu,用的lm3s9b96,例程中的uart例子收发都是简单的查询等待方式,不具备多少实用性且效率低下,于是分别用串口FIFO中断不等待的接收方式和DMA发送的方式实现了串口的收发,中间遇到了不少的问题,但问题总归是问题,用心总是会解决的。

       2014.5.28

       先前写的程序本来在中断中置接收结束标志的,今天突然遇到了一个问题,假如串口接收FIFO设置为6/8的深度,并设置接收FIFO中断 和 接收超时中断, 当串口接收的数据长度正好为12的整数倍时,就不会进入超时中断。整整思考了一下午,得知lm3s系列mcu的接收超时中断是在FIFO中存在数据,但没有到预设的12字节的接收中断触发深度时,则在3个数据的传输时间间隔内会触发超时中断,取走最后的数据。可当发送数据长度为12的整数倍时,由于一次放入12个字节全部被取走,也没有后续数据发送,不满足此芯片超时中断触发的条件,无法判断接收是否完成。

        解决办法为每次中断接收时不把12个字节长度的数据全部取走,具体为在uart 的中断服务程序中设一个整形变量,每次进入中断后初始化为0,每取走一个数据变量值+1,当取到第11个的时候,break掉,等待超时中断到来取走之后的数据,这样就随时可以满足超时中断的触发条件。

       在实验室同学的建议下, 第一次写博客,希望能与大家分享一些东西的同时也提高自己。

0 0
原创粉丝点击