原创 lwip學習

Lwip移植,裸機 移植的過程概覽 這裏以stm32f4爲平臺,裸機移植,對關鍵的地方進行分析: 總體的數據流向圖大概是,以讀取網絡數據爲例: 其中LAN8720屬於片外設驅動,使用的網口不一樣的話這個驅動以爲是不一樣的。LAN

原创 lwip-udp rawapi 使用詳解

lwip-udp rawapi 使用詳解 udp簡介 udp是無連接的傳輸層協議,沒有客戶端和服務器的概念。 rawapi使用詳解 udp_new,創建一個udp的控制塊,記錄的關鍵信息有,本地端口號,遠程端口號,標誌位flag

原创 stm32 adc使用

adc配置 adc配置時有個地方讓我覺得很困惑: ContinuousConvMode ,DiscontinuousConvMode這兩個參數,乍一看只需要一個就好了,只要決定是不是連續轉換就可以了。但實際上這兩個參數是爲了配置

原创 lwip分析-udp數據包接收過程詳解

接收鏈路層數據 在以太網中斷中接收到數據,最先調用 ethernetif_input(&g_stFslNetif0); g_stFslNetif0是網卡接口結構體,數據處理過程爲: 調用low_level_input,從網卡中獲

原创 stm32分散加載機制的學習

什麼是分散加載 單片機和電腦一樣具有,存儲鏡像和運行鏡像。生成的bin文件下載到flash裏面,然後根據連接腳本加載到指定的地方運行。通常情況下代碼段都是放在rom中運行的,而數據段是放在ram中運行的。有時候爲了提高效率或是其他

原创 iic spi uart 的基本知識

基本知識 同步通信,異步通信 同步通信:使用相同的時鐘,沒有起始位,停止位,效率高,主機提供時鐘,是阻塞通信的方式。 同步通信從機使用主機的時鐘,因此從機的時鐘設不設置都沒有關係。 異步通信:不使用相同的時鐘,發送方,發完一個

原创 關於內存對其的一點思考

背景 這幾天需要設計協議,所以我重新思考了一下,內存對其的問題。 之前的理解,內存對其的問題我也遇到過,之前寫應用的一小段代碼的時候。對於收到的數據,進行了強制轉換大概是以下的情況。 僞代碼如下 typedef struct {

原创 結構體聲明位域的使用

背景知識 結構體中的冒號表示位域。 位域出現的原因是由於某些信息的存儲表示只需要幾個bit位就可以表示而不需要一個完整的字節,同時也是爲了節省存儲空間和方便處理。 實際應用 typedef union { char u;

原创 BG2312 ascii hex 字符數組 字符串 總結

背景知識 嵌入式開發有時候經常會解析傳感器的數據,這裏進行一下總結: GB2312是漢字的編碼,每個漢字的hex,有兩個8位的16進制數組成。 參考:http://www.knowsky.com/resource/gb2312tb

原创 wireshark軟件學習

wireshark軟件簡介 wireshark軟件界面主要包括3個部分 數據包列表:軟件抓到的所有的格式的數據包。 單個數據包解析:鼠標選中其中一個數據包,軟件會自動將數據解析出來。 單個數據包原始數據:數據包對應的原始數據。

原创 lwip基礎知識學習

Lwip移植,裸機 移植的過程概覽 這裏以stm32f4爲平臺,裸機移植,對關鍵的地方進行分析: 總體的數據流向圖大概是,以讀取網絡數據爲例: 其中LAN8720屬於片外設驅動,使用的網口不一樣的話這個驅動以爲是不一樣的。LAN

原创 c語言複習

源碼 ,反碼 ,補碼 正數的源碼反碼補碼都是一樣的。 負數的補碼是,符號位不變,其餘位取反加1。 計算機存儲負數,存儲的是補碼,這樣方便計算機的計算。 需要注意的是,在進行移位運算時,有符號和無符號是不同的 有符號,右移,對於正數

原创 ros學習筆記-消息話題

學習目標 自定義一種消息 調用一個turtle,使用鍵盤控制 讀取這個turtle的爲止信息,填充自己的消息,併發布出來 訂閱這個話題,打印出讀取到的內容 使用launch文件啓動 自定義消息話題 自己定義的消息 string n

原创 ros學習網站

## 自己在網上自學,感覺比較有用的網站 古月居 http://www.guyuehome.com/column/ros-explore/page/3 官網 http://wiki.ros.org/cn/ROS/Tutorials 創

原创 rplidar使用

rplidar的使用 新上手的激光雷達,第一次使用。根據網上的教程,先搭建環境跑起來。 安裝rviz sudo apt-get install ros-kinetic-rviz 通過apt-get安裝rviz,我的電腦上安裝rviz