熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2025-4-26 20:44
正文摘要:#include "E2_25AA020A.h" void E2_WriteByte(unsigned char addr,unsigned char dat) { unsigned char sta; SPI_CS = 0; ... |
你可以把這個(gè)等待當(dāng)成應(yīng)答,或者寫入完成標(biāo)志位,怎么叫都行,你理解就行了 1: 把寫入一個(gè)完整數(shù)據(jù)(這包括寫下地址,讀寫標(biāo)志等等)和等待分開寫,寫兩個(gè)函數(shù) 2: 聲明一個(gè)僵局位,或者一個(gè)全局u8變量都行,看實(shí)際情況吧,我這行就用 F 來代替吧, 現(xiàn)在定義規(guī)則: F == 1 就是正在寫入, F !=1 就是寫入完成 3:這個(gè)是你的寫入函數(shù)
|
不死鳥a 發(fā)表于 2025-4-27 14:23 論壇搜一下MODBUS的代碼,我以前看過,應(yīng)該就是中斷的 |
wufa1986 發(fā)表于 2025-4-27 10:19 歐克,謝謝大佬 |
問一下大佬有代碼參考一下嘛? |
不死鳥a 發(fā)表于 2025-4-26 20:46 可以參考下我發(fā)的帖子。串口的解決辦法是使用DMA發(fā)送但是要注意需要判斷DMA是否為忙狀態(tài)也就是說不用DMA發(fā)送串口每發(fā)一個(gè)字節(jié)就得判斷一下狀態(tài)然后發(fā)下一個(gè)字節(jié),使用DMA后每發(fā)一幀(一幀數(shù)據(jù)多長是個(gè)人定義的)需要判斷一下DMA狀態(tài)然后發(fā)下一幀。如果數(shù)據(jù)量不大波特率夠高直接阻塞式發(fā)送也沒事。 |
你說的問題,通常高級芯片都有DMA功能去避免這個(gè)問題 |
不死鳥a 發(fā)表于 2025-4-26 20:46 用中斷方式嘛 |
還有在UART中,需要查詢while(TI),while(RI),有什么辦法可以避免這種阻塞代碼嗎,謝謝大佬們的解答 |
Powered by 單片機(jī)教程網(wǎng)