前期工作準備
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()進行中斷。

HAL_UART_Receive_IT函數是STM32的庫函數,就是起着設定資訊存放位置的作用,三個參數分别表示接收資訊的UART句柄,接收資訊的Buffer位址以及接受資訊長度。該函數在接收到資訊之後,會在Buffer指向的位址順序寫入字元,并在達到指定長度之後調用回調函數HAL_UART_RxCpltCallback。HAL_UART_RxCpltCallback處理的是業務邏輯。
以上幾步是通過對中斷進行處理,将序列槽的資訊讀入到緩沖區記憶體放。而程式要使用的時候,直接進行讀取即可。為了友善,應該封裝一個隊序列槽讀取字元串的函數。
下面是主函數的代碼(PEEK和POKE),為了增加魯棒性做了很多考慮,是以在使用者亂輸入的情況下也不會崩潰。主要的思路可以觀看注釋。
連接配接示意圖
燒錄程式示意圖
擦出并燒錄
實驗結果:實驗先觀察了0x200004b8的内容。再往0x200004a8寫入一個字元串。在通過poke觀察寫入的值。