你好:
遇到一个疑问,器件是430F5438A,当UART接收不固定长度数据时候,怎么样可以用寄存器清掉RXBUF多余的数据,例如,我只需要接收6个数据,但实际来了10个数据,而且后4个数据是我不需要的,因为数据不定长,不想用数组接收,是否直接有寄存器某位直接把RXBUF清零?
Gary Gao:
430F5438A的接收RXBUF为8 BIT 有效寄存器不会收到10个bit数据,而且收到的8bit数据取决于发送端。如果你只需要6个数据其他位填0发送,不知道这样可以满足你的需要吗?
灰小子:
建议用软件方法解决。比如在字符串开始增加一个说明数据长度的字符,或者使用某个特定的字符代表数据结束
HG:
RXBUF和TXBUF一样,只是一个寄存器,8bit。不是其他ARM单片机可以是连续多个数据,设置FIFO的那种。
如果使能中断,每一个到了RXBUF的数据都会有提示,读出来之后到数组。没有办法变长处理。
可以做的就是自定义协议,比如第一个字节表示会有多少个数据,按着接受放在数组就可以了。