欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
stm單片機串口發送的疑問
[打印本頁]
作者:
老夫任我行
時間:
2023-11-28 11:39
標題:
stm單片機串口發送的疑問
在串口數據發送操作中,單片機代碼一般是這樣寫的:void USART_SendByte(USART_TypeDef* USARTx, uint8_t Data){ while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); USART_SendData(USARTx,Data); }
那么這里while不是一直在死等嗎?這個過程程序是不做任何事的,和delay有什么分別?都說程序中不要用延時死等,那么這里怎么辦?如果要發送的數據很多的話,每次都在這里死等一下,整體會拖慢程序運行速度吧?不加這個while的話還有其它方法實現發送功能嗎?我知道可以用DMA,但好像不是所有片子都有DMA吧?虛心求教
作者:
Y_G_G
時間:
2023-11-28 14:35
雖然說都是死等,但效率并不會太慢
你看一下代碼就知道了
調用函數之后并不是先發送數據,而是先查詢發送完成標志位
然后,就發送數據,函數就返回了,程序在返回之后就可以去做其它的事了
其實這就已經可以了,串口本身就是不用來進行超高速數據傳送的
作者:
xuyaqi
時間:
2023-11-28 14:50
while是檢測到發送完就進行下一步,delay不可能比while時間短,最好用while。
作者:
123156fsadf
時間:
2023-11-28 15:23
可以寫一個發送隊列,然后用發送中斷的方式進行發送,每發送一個字節會進入發送中斷一次,此時在中斷里判斷發送buf還有沒有待發送的字節,有則繼續發送,沒有則說明此次發送已經好了。
作者:
網絡孤客
時間:
2023-11-28 16:12
不是死等,是反復檢查,當檢測到發送完(時間可長可短),就進入下一步
Delay等待只能固定時間,不能靈活控制。
作者:
哦豁~
時間:
2023-11-28 16:12
大部分應用對于:“串口阻塞發送”,并不會對其他進程的時效有多大影響。除非要發送很多很多字節或其他進程的實時要求特別高,才不會選擇這種阻塞發送。如果不能用阻塞發送,可以利用串口BUF空中斷+串口發送完成中斷+軟件做個發送緩沖器。
作者:
longline
時間:
2023-11-28 18:43
不是死等,是檢測是否接收或者發送完成等待,任務不需要即時響應的話,波特率調快一點還好這種方式也還行,如果不想等就用中斷做
作者:
人中狼
時間:
2023-11-28 19:33
改中斷發送方式就好了
作者:
Hephaestus
時間:
2023-11-28 22:43
可以把這個死等程序放主循環里面,其他功能在中斷完成,就不會有卡死的現象了。這個死等只要別放在中斷里面等就沒問題。
作者:
123156fsadf
時間:
2023-11-29 16:53
Hephaestus 發表于 2023-11-28 22:43
可以把這個死等程序放主循環里面,其他功能在中斷完成,就不會有卡死的現象了。這個死等只要別放在中斷里面 ...
你這太抽象了,哪有把串口放主函數,其他放中斷的。本末倒置了不是
作者:
老夫任我行
時間:
2023-12-1 15:51
好的,明白了,多謝各位
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1