RTT專案之雅特力開發板串列埠裝置除錯

2021-10-06 02:15:05 字數 1481 閱讀 1375

還沒有掌握的點是,最後乙個:

修改完sconscript,再用scons工具重新生成mdk5 檔案。

打算,進行專案的基本步驟是,用stm32l4的板子寫驅動,然後,再移植at32到專案中。

進行pin操作的步驟已經基本上掌握了,只是沒有深入的分析,想起看過super的文章,已經很透徹了,就不再做介紹了。基本的流程見下圖,就可以了。

所遇到的乙個問題:不過是基於stm32l431的

呼叫rt_device_control改變lpuart1的波特率,一直沒有成功。但通過配置uart1和uart2都成功了,說明rtt官方給出的drv_uart.c檔案是可行的。懷疑過很多原因這個過程也對底層rtt的實現有了更多的了解。

現象如下:

單步除錯,發現調到呼叫底層配置時鐘時會出錯。從而想到cubmx更新硬體配置後,board.c沒有更新時鐘函式systemclock_config(void);更新後問題解決。

在這個過程中發現:所有的串列埠裝置都放到了容器裡,跟蹤容器到這裡會跳到具體的定義函式:

關鍵點來了,如何對應上具體的硬體的呢?繼續跟蹤

這裡這個函式rt_container_of有什麼作用呢?

這個巨集的作用是通過結構體成員的位址,返回結構體的位址

類似的rtt裡的還有

#define rt_list_entry(node, type, member)    rt_container_of(node, type, member)

引數 type :結構體的型別

引數 member:結構體的成員

&((type *)0->member) 的作用是求成員 member 在 type 結構體中的相對偏移量

最後,在這個stm32_configure函式最後,有個hal_uart_init(&uart->handle)如下圖:

通過查程式設計手冊就可以看到這裡其實就是對應的咱們要初始化的lpuart1位址了:

再跟蹤就會跳到底層的串列埠初始化函式如下圖:其他的裝置也是一樣的原理。

雅特力的開發板也是一樣的流程,在此就不在冗寫了。移植到雅特力開發板的話,要多看手冊了,它們沒有配置時鐘cubmx工具。

專案開發文件之 專案開發計畫

專案開發計畫 1 引言 1.1 編寫目的 闡明編寫可行性研究報告的目的,提出讀者物件 1.2 專案背景 應包括 專案的委託單位 開發單位和主管部門 該軟體系統與其他系統的關係。1.3 定義 列出文件中用到的專門術語的定義和縮寫詞的原文 1.4 參考資料 可包括 專案經核准的計畫任務書 合同或上級機關...

專案開發之迭代前進

最近開發一mis專案,因對業務流程不甚了解,開發過程中全程使用迭代開發。stage one 至客戶處 了解系統需求,大致了解客戶對系統的功能要求,客戶業務操作流程,資料流轉過程。回司 寫方案書,一一寫出 系統構架 功能操作模組 輸入輸出資料 系統操作流程圖 許可權分配說明 工期預估,形成文件。sta...

學習筆記之專案開發

當我們再做專案的時候,總會覺得很盲目,感覺不知道該怎麼下手。寫了又改的。當然我也是初學者,在這個學習過程當中,希望把自己所能理解的,所學的都給記下來。首先我們做專案,就比如說是乙個 購物的 吧。2.把需求文件寫好.簡單點說,比如要求做個登陸功能,註冊功能之類的 3.按照需求文件,建立用例模型 建立用...