Internship
,NSPO
簡介工作細節
我負責為XTx資料傳輸,XTx在衛星電機次系統功能為向基地台傳送資料,並接受EUCC指令,此6U衛星為傳送圖像資料為主,以下為XTx在本實作整體程序(mode2-3)。
註解: 本說明為 LOOPBACKMODE 因此未與EUCC連接,是STM32自傳自收
最終目標 : 實現CAN bus自傳自收(指令字串)並使用UART與電腦回應狀態。
將依續說明需要撰寫的程式碼:
提醒 :以下啟動函式需要放入while(1)
迴圈內,才可持續接收CPU指令。
main.c
:要注意的是:根據RXBUFFERSIZE
決定輸入資料長度,若長度小於Size,則會繼續等待接收,最終會時間超過,很可能會return HAL_Timeout
因此在一開始有提醒,只能輸入poweron或poweroff,在此專案長度為 7 bytes。
HAL_UART_OUT.h
:(also print messages on terminal to inform user.)
在HAL_UART_OUT.c
的HAL_UART_RxCpltCallback
中:將extern的UART_Rx_flag設成1,回到main.c中CPU會進入以下程式碼進行印出poweron動作並flag=1去執行用CAN BUS傳送資料給地面台
注意 :在中斷底層盡量不要進行動作,如DELAY與print,理由如下:
1.中斷內的時間非同步主程式時間。
2.UART中斷也是使用同個暫存器,因此不適合在底層使用print()。
HAL_UART_OUT.c
:HAL_UART_out.c
的STM32f4_UART_Init(UART_HandleTypeDef *huart)
內補上:代表收到進入中斷
main.c
:
main.c
:
CAN1_RX0_IRQHandler
並到HAL_CAN_RxCpltCallback
進行動作stm32f4xx_it.c
:
注意要開啟中斷分別要有以下兩步驟(CAN bus)
main.c
,enable HAL_CAN_Receive_IT注意 :以下啟動函式需要放入HAL_CAN_RxCpltCallback
,中斷執行結束後,需重複開啟中斷。
stm32f4xx_it.c
:main.c
:
主要的main.c
檔案:
提醒:
在使用模擬的Terminal console時:
1.baurate (此範例為9600)
2.STOP bit(此範例為1)
3.Parity bit(此範例為None)
設定要跟UART_Init()
內的設定一樣才能有效!
////
4.Tx傳送尚未結束即會進行Rx中斷(因為中斷優先權較高),又在Rx中斷下又開Receive,因此Tx和Rx Receive會互鎖,因此修正方式即是將互鎖機制取消。
互鎖設定取消HAL_CAN_INIT.h
:
print("str")
using UARTNSPO