RTT使用問題總結

2022-06-17 16:18:18 字數 2285 閱讀 4607

1 env下不用將stm32fnxx_hal_msp.c拷貝到rtt工程資料夾下(也不用呼叫其中的片上外設函式如void hal_spi_mspinit(spi_handletypedef* hspi),聽說kconfig自己會呼叫根據弱定義尋找;studio下根據文件說是需要;

stm32_spi_init(drv_spi.c line81)-》hal_spi_init(被spi_conifgure 呼叫drv_spi.c line387,**在hal_spi.c line 310,又呼叫了 hal_spi_mspinit)-》 hal_spi_mspinit(hspi)-》在stm32f4xx_hal_spi.c中弱定義,在stm32f4xx_hal_msp.c 中根據cubumx生成,所以需要將cubumx生成的 hal_spi_mspinit拷貝到board.c下。

2 關於spi配置,當設定最大速率後最終發現時鐘頻率降低2倍的原因,是因為rtt獲取時鐘源函式stm32_spi_init下的  spi_apb_clock不正確,沒有正確反映外設掛在哪個匯流排下面;解決方法有2種:

#if defined(soc_series_stm32f0) || defined(soc_series_stm32g0)

spi_apb_clock = hal_rcc_getpclk1freq();

#else

spi_apb_clock = hal_rcc_getpclk2freq();

#endif

3 外設的使用一定要注意開啟board.h進行類似以下的宣告

#define bsp_using_uart1

#define bsp_uart1_tx_pin "pa9"

#define bsp_uart1_rx_pin "pa10"

4 自己寫的驅動老是說找不到標頭檔案,儘管路徑已經設定好了,原因時下面的巨集沒有開啟

#define pkg_using_ade7913#ifdef pkg_using_ade7913

5 studio下從hsi到hse,將cubmx生成的systemclock_config 替換 drv_clk.c中的system_clock_config(target_freq)並將該函式的源**遮蔽;同時在  stm32f4xx_hal_conf.h中修改hse的值

//先修改stm32f1xx_hal_conf.h中的 hse_value與實際的一致

//然後在drv_clk.c中替換systemclock_config

void clk_init(char *clk_source, int source_freq, int

target_freq)

//最最後同時也修改board.h中的三個巨集,儘管原來的hsi時鐘配置也沒有用到其進行計算,只是為了提示輸出

*-------------------------- clock config begin --------------------------*/

#define bsp_clock_source                  ("hse")

#define bsp_clock_source_freq_mhz         ((int32_t)8)

#define bsp_clock_system_freq_mhz         ((int32_t)72)

/*-------------------------- clock config end --------------------------*/

6 studio下spi的使用,按照board.h中所說即可,不用顯示呼叫hal_spi_mspinit(&hspix),有的地方自會呼叫

7 對於多個執行緒共享互斥量時一定要注意:1 申請和釋放要成對使用;2 如果有條件分支要麼在各自分支中釋放(適用於如果分支執行完需要較長時間。釋放數目大於申請),要麼集中釋放。不正確使用會造成有得執行緒被一直掛起。

7 rt-thread studio中關於工作空間:可參考eclipse中的工作空間介紹(workspace)

可以在工作空間裡建立多個工程,各工程可以不和workspace在同乙個資料夾下,工作空間可以新建和切換;不同資料夾下不同版本的相同工程匯入同乙個空間時後匯入的可以先刪除.metadata資料夾和workspace資料夾再匯入,配置可以拷貝「.setting"資料夾

8  rt-thread studio下的git版本管理

9 關於rtt對於臨界區的保護,現在只有關中斷,但有的是不能關中斷的,否則任務就不能跑了譬如基於中斷的串列埠接收;對於modbusrtu如果擔心通訊過程因高優先順序切走而通訊失敗可以暫時用錯誤重發來解決這個問題。

RTT使用技巧

rtt 1 將接下來在rtt viewer上顯示的資料記錄到指定檔案 使用 menu data start logging.快捷鍵 f5 停止記錄並關閉檔案 shift f5 2 使用 控制顯示在rtt viewer上的文字的顏色 使用格式1 segger rtt writestring 0,rtt...

SYD8821 RTT使用說明

syd8821是具有全球領先低功耗 rx 2.4ma 94.5dbm靈敏度,tx 4.3ma 0dbm輸出功率 的藍芽低功耗soc晶元,在極低電流下實現了優異的射頻效能,搭配176kb sram,512kb flash,非常適合中高階可穿戴 智慧型家居 物聯網等低功耗應用。具體可諮詢 syd8821...

RTT的IPC機制篇 IPC通訊總結

總結1 rtt通訊方式總結 2018年12月29日 10 47 ipc inter process communication 1,rtt的通訊機制 訊息佇列 郵箱 訊號量 互斥量 事件。2.我又按照其傳輸的內容分為 資料類和非資料類通訊。非資料類,執行緒間 執行緒與中斷傳輸非資料類資訊,實現執行緒...