注册 登录
查看: 577|回复: 6

[K60] 关于K60 的串口问题

[复制链接]
发表于 2014-11-3 17:48:59 | 显示全部楼层 |阅读模式
看关于串口模块的一些详细的配置,有问题来了,在发送一个字符函数中有这么一条指令:while(!(UART_S1_REG(UARTN[uratn]) & UART_S1_TDRE_MASK));   这句话是一直等待S1寄存器中最高位变为1,然后才执行下一句写入发送的内容到数据寄存器,然后去看S1寄存器的最高位有这样一句话 “ 发送数据寄存器空标志,当发送缓冲区(D 和 C3[T8])中的数据字的数目等于或少于 TWFIFO[TXWATER]指示的数目时,TDRE 为 1。”我想问下发送缓冲区是什么,它里面的数据字的数目怎么确定呢?而TWFIFO[TXWATER]指示的数目又怎么确定呢?   求山外哥解答
  

回复

使用道具 举报

发表于 2014-11-3 17:53:07 | 显示全部楼层
发送缓冲区,就是FIFO。
UART0和1,好像是4个字节。其他就1个字节。

不过用FIFO,就得配发送中断,处理起来麻烦,所以我们直接用等待发送好了。

TWFIFO[TXWATER] ,你看看寄存器的说明吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 20:22:45 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-3 17:53
发送缓冲区,就是FIFO。
UART0和1,好像是4个字节。其他就1个字节。

哦哦,因为有个同学用了一个学长的库,然后库里初始化串口时有个参数是和缓冲区有关的但是没说这个参数是多少。
山外哥的意思是用了他那个初始化函数的话如果缓冲区参数写对了的话还要配置中断吗?还是不用管中断剩下的用while的方式等待发送就可以了,目的就是给电脑发个字符
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-3 20:26:30 | 显示全部楼层
六步上篮 发表于 2014-11-3 20:22
哦哦,因为有个同学用了一个学长的库,然后库里初始化串口时有个参数是和缓冲区有关的但是没说这个参数是 ...

缓冲区太小了,要分多次发送,发送完成进中断,继续写入缓冲区。 因为这样的效率不高,所以我们也没弄,直接NRF24L01+ 无线收发,占用CPU时间大大降低。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 20:32:59 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-3 20:26
缓冲区太小了,要分多次发送,发送完成进中断,继续写入缓冲区。 因为这样的效率不高,所以我们也没弄, ...

那我就只发送一个字符的话是不是不需要配置中断了?直接用while查询等待发送?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-3 20:43:06 | 显示全部楼层
六步上篮 发表于 2014-11-3 20:32
那我就只发送一个字符的话是不是不需要配置中断了?直接用while查询等待发送?

嗯,那样做是可以不需要中断,不过等待查询,效率就会稍微低一些,编程简单很多。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 20:57:51 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-3 20:43
嗯,那样做是可以不需要中断,不过等待查询,效率就会稍微低一些,编程简单很多。

好的,谢谢山外哥啦
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部