天天看點

嵌入式LAB 4:Bootloder

前期工作準備

Mac OS X + Windows 7虛拟機

安裝STM32 ST-LINK Unity。用于燒錄程式。

安裝STM32 ST-LINK所需要的驅動

安裝Keil UVision 5,這是IDE,可以生成Hex檔案,也可以燒錄到闆子上。

安裝USB-TTL是以需要的驅動。

安裝PUTTY,Windows下檢視序列槽。

器材準備

STM32F103闆子一個

ST-LINK V2

USB-TTL

不需要面包闆、按鈕等

實驗流程

序列槽收發

由于要通過序列槽發送指令至STM32闆子,首先需要解決的是序列槽收發的問題。主要經過的流程是:USART1_IRQHandler → HAL_UART_IRQHandler → HAL_UART_Receive_IT → HAL_UART_RxCpltCallback。

USART1_IRQHandler主要的功能是打開了USART1的中斷,覆寫函數USART1_IRQHandler()進行中斷。

嵌入式LAB 4:Bootloder

HAL_UART_Receive_IT函數是STM32的庫函數,就是起着設定資訊存放位置的作用,三個參數分别表示接收資訊的UART句柄,接收資訊的Buffer位址以及接受資訊長度。該函數在接收到資訊之後,會在Buffer指向的位址順序寫入字元,并在達到指定長度之後調用回調函數HAL_UART_RxCpltCallback。HAL_UART_RxCpltCallback處理的是業務邏輯。

以上幾步是通過對中斷進行處理,将序列槽的資訊讀入到緩沖區記憶體放。而程式要使用的時候,直接進行讀取即可。為了友善,應該封裝一個隊序列槽讀取字元串的函數。

嵌入式LAB 4:Bootloder

下面是主函數的代碼(PEEK和POKE),為了增加魯棒性做了很多考慮,是以在使用者亂輸入的情況下也不會崩潰。主要的思路可以觀看注釋。

嵌入式LAB 4:Bootloder

連接配接示意圖

嵌入式LAB 4:Bootloder

燒錄程式示意圖

嵌入式LAB 4:Bootloder

擦出并燒錄

嵌入式LAB 4:Bootloder

實驗結果:實驗先觀察了0x200004b8的内容。再往0x200004a8寫入一個字元串。在通過poke觀察寫入的值。

嵌入式LAB 4:Bootloder