esp8266的STM32驅動,數據發送接收由DMA完成,釋放CPU。
esp8266的STM32驅動,數據發送接收由DMA完成,釋放CPU。
目前只能發送返回消息為成功或失敗的AT命令,並判斷是否成功,詳見esp8266_cmd();其它返回消息不可預知的命令(如查看AP,IP等)未實現,也用不著。以查詢的方式判斷有無消息,是什麼樣的消息,返回消息類型,如果是收到了數據,則會保存在指定的地址,並給出長度,詳見esp8266_parse();當連接建立後,給遠程發送數據用esp8266_send(),它會在數據實際發送成功前返回,剩下的活由DMA完成,然後請耐心地等待消息,想知道結果就調用esp8266_parse(),它會根據返回的消息判斷發送有無成功,並返回。
文中的“消息”是指ESP8266發的指示狀態的,“數據”指通過網路收發的。
代碼和例子:https://github.com/ydwzj/STM32F4 ,標準庫忽略掉了,如果沒有的話,自己下載stm32f4_cubexxx.zip,使用示例:在Projects_new/stm32f407vet6/Examples/UART/UART_TwoBoards_ComDMA中,在這個例子是用來實現websocket的,如果沒用到,把相關代碼刪掉,只看8266使用就行了。如果你要測試websocket,還要一些文件,請見:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.html,下載他那個網頁後,打開把地址換成192.168.4.1:8080/chat,就可以連上了。這個被我用來取代藍牙,讓MCU與平板通信,已成功用來顯示MCU發過來的數據了,也能發給MCU,但雙方都同時連續發送數據時可能會出錯,這種情況未測試,MCU連續發,平板偶爾發是沒有問題了。
由於驅動代碼被多個工程用到,而代碼經常修訂,可能導致某些工程編譯出錯,要做些小改。這裡上不了圖片,就不傳了,也放工程文件夾下了,還是github厚道。