大家好,
在研究CC2540的串口驱动那块程序,里面有两个定义:HAL_UART_DMA_IDLE,HAL_UART_MSECS_TO_TICKS, HAL_UART_RX_TIMEOUT 这几个是什么意思啊?看代码始终不能理解,望大家帮帮释疑下啊!
多谢了!
Yan:
Jacen,
你跑偏了。
这些不是你需要关心的内容。
你只要懂得如何使用UART的初始化,读写功能就可以。
比如HalUARTInit(), HalUARTRead(), HalUARTWrite(), 从这些地方着手吧:)
Jacen Cao:
回复 Yan:
Hi Yan,
谢谢您的回复。
因为现在我要做个项目,要用uart来做,上次您和我说务必要用DMA的模式来做,这样好像就无法分辨从uart端传来的那包数据什么时候接收完成,感觉DMA有时会一下子读到很多包。因为从uart端传来的数据包的byte数是不一样的,所以就去看那些宏定义,看能否有标志可以分辨出来。
Yan:
回复 Jacen Cao:
Jacen,
了解。
通常UART通信的应用,一般建议会定义一个包的长度,或者定义一个特殊字符表示所需数据的开始和结尾来区分。这样会比较好一点。
Jacen Cao:
回复 Yan:
Hi Yan,
您的意思是将uart的每一包的数据长度都固定,然后等收满了这么多个byte的数据后再来一次读出来?是吗?
Yan:
回复 Jacen Cao:
Jacen,
这完全是应用层的数据交互协议,完全是客户自定义,跟DMA什么的无关。
我只是举几个例子,但是你当然可以这么做:)
jin guo1:
回复 Yan:
Dear Yan:
为什么了解这个就是跑偏了呢?我觉得如果不能将程序中处理UART的原理弄清楚,在使用它的时候就不能完全评估项目的风险,如果只是随便弄一个东西可以不求甚解,但是需要真正做项目不求甚解是风险极高的事情。
以上问题我也有很多疑惑,这个是不是为了在接收数据的时候如果未正常接收数据做的一个超时处理?请帮忙解释一下,非常感谢!