日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

关于VCP(Virtual Com Port)拓展的调试经历(一)

發(fā)布時間:2023/11/29 c/c++ 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于VCP(Virtual Com Port)拓展的调试经历(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

* The Overview

  前日,接到老板部署的任務,將現(xiàn)有的基于STM32L151與L432的LoRaWAN程序中添加USB CDC(Communication Device Class)功能,并枚舉為VCP(Virtual Com Port)用以替代以往的串口打印。很疑惑為什么以前架構代碼的時候沒有添加進去。。。估計是那時候大家都不太懂CDC。

  以前的開發(fā)板通過CP210X芯片來進行串口轉(zhuǎn)USB,實測效果并不太好。

CP210X芯片在WIN7電腦上還必須得手動安裝驅(qū)動,最關鍵的成本,又是一部分開支。

在重新設計了L151、L432節(jié)點之后,取消了板載的CP210X轉(zhuǎn)而通過VCP方式是聰明的選擇。

?  在調(diào)試VCP過程中并不是想像中的非常順利,雖然在CubeMX生成的VCP代碼中很容易就搞通了VCP部分,直插L151mircoUSB口之后可以觀察到PC顯示成功枚舉成了VCP,并且打印也比較順利。

?  在VCP的驗證中沒有遇到許多朋友描述的heapsize0x200導致CDC枚舉失敗的問題,但在將VCP部分移植到LoRaMAC中時,工作與工作量變得復雜了起來。因為LoRaMAC對晶振時鐘配置和外設中斷的配置要求比較復雜,以及現(xiàn)有的LoRaMAC工程的啟動文件HAL庫等文件與新版本有較大不同,導致VCP植入后原本的LoRaMAC程序不能運行。對基本毫無移植經(jīng)驗的我來說,還在移植過程中踩了不少的陷阱。。。

為了避免以后的工作中有類似的開發(fā)需求,所以在此對移植過程中所遇見的比較重要的某幾處地方做一個筆記:

    1. 首先需要注意的是端口映射,許多的STM32芯片支持端口映射和IO復用,例如可以在不同的引腳做相同的外設。所以在配置外設端口時需要注意請不要犯跟我一樣的低級錯誤,配置PB67,測試PA910.....

    2. 注意移植的宿主代碼中是否有對IO進行的低功耗處理,在許多高性能,低功耗設備應用場景中,為了做到最低的功耗,往往會對沒有用到的IO口做低功耗處理,一般做法為將IO置為input。此時在移植程序時,例如在移植VCP功能時需要檢查確保PA1112引腳沒有進行低功耗處理。

    3. 對于新生成的STM32工程,Cube會把一般外設的中斷處理(Handler)函數(shù)放到一個叫stm32xxx_it.c文件里,但往往老舊的工程代碼會擁有自己的中斷處理函數(shù),有可能在編譯沒有出現(xiàn)重復定義的情況下他會默認執(zhí)行的處理函數(shù)并不是你想要的那一個,導致你完全找不到原因!所以在處理中斷處理函數(shù)時必須要小心注意并做相應的調(diào)整。例如中斷優(yōu)先級,搶斷優(yōu)先級,也即是對循環(huán)嵌套的配置,對于代碼邏輯是否合理。

?

在排除了晶振和中斷優(yōu)先級以及驗證SPI通訊正常等各種因素之后,LoRaMAC程序依然存在這無法接收下行幀的問題。此問題暫未解決,待后天出差回來之后再研究。

?

?

?

?

---有事做,有人愛,有所期待

?

轉(zhuǎn)載于:https://www.cnblogs.com/SaberArthur/p/11128404.html

總結

以上是生活随笔為你收集整理的关于VCP(Virtual Com Port)拓展的调试经历(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。