参考文献
必要Tool Chain / Tool
- STM32 CubeMX
- Keil μVision 4
- STM32 ST-Link
開発手順
CubeMX
CubeMXを立ち上げ「New Project」を選択
Board Selectorタブから「NUCLEO-F302R8」ボードを選択
「Project」メニューから「Generate Code」を選択
Project SettingsからProject Name, Project Location, Toolchain/IDE等を選択
「Code Generator」タブから下記のように選択 - 「Copy only the necessary library files」
「OK」をクリック。Code Generationが完了すると下記のメッセージが表示されるはず。
「Open Project」で進む ⇒ これでKeil μVisionが立ち上がるはず。
Keil μVision
最初の設定
「Open Project」からμVisionを立ち上げると、最初に下記のエラーメッセージが出る。
Keil μVisionの「File」メニューから「Device Database...」を選択
「Device Database」画面から「STM32F302RB」を選択し、「Close」を選択
コーディング
生成されたコードの中のmain.c (Application/Userの中)は下記の通り。
while (1)文に下記のコードを追加
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(500); } /* USER CODE END 3 */ }
- 上記のLD2_GPIO_Port、LD2_Pinはmain.hで以下のように定義されている。
#define LD2_Pin GPIO_PIN_13 #define LD2_GPIO_Port GPIOB
Compile / Linking
ツールボックスから「Build」を実行
下段の「Build Output」にこのようにCompile、Linkingを行う。
Build target 'Blink_LED1' assembling startup_stm32f302x8.s... compiling main.c... compiling stm32f3xx_it.c... compiling stm32f3xx_hal_msp.c... compiling stm32f3xx_hal_tim.c... compiling stm32f3xx_hal_tim_ex.c... compiling stm32f3xx_hal_uart.c... compiling stm32f3xx_hal_uart_ex.c... compiling stm32f3xx_hal.c... compiling stm32f3xx_hal_rcc.c... compiling stm32f3xx_hal_rcc_ex.c... compiling stm32f3xx_hal_gpio.c... compiling stm32f3xx_hal_dma.c... compiling stm32f3xx_hal_cortex.c... compiling stm32f3xx_hal_pwr.c... compiling stm32f3xx_hal_pwr_ex.c... compiling stm32f3xx_hal_flash.c... compiling stm32f3xx_hal_flash_ex.c... compiling stm32f3xx_hal_i2c.c... compiling stm32f3xx_hal_i2c_ex.c... compiling system_stm32f3xx.c... linking... Program Size: Code=4476 RO-data=480 RW-data=16 ZI-data=1136 FromELF: creating hex file... "Blink_LED1\Blink_LED1.axf" - 0 Error(s), 0 Warning(s).
ST-Link
STM32 ST-Link Utilityアプリケーションを実行
「Target」メニューから「Program & Verify...」を選択
File pathからhexファイルを選択し、「Start」をクリック
実行されると、下記のログのあと、NucleoボードのLED LD2が0.5秒間隔で点滅するはず
10:15:20 : ST-LINK SN : 066FFF554857707067053924 10:15:20 : ST-LINK Firmware version : V2J25M13 10:15:20 : Connected via SWD. 10:15:20 : SWD Frequency = 4,0 MHz. 10:15:20 : Connection mode : Normal. 10:15:20 : Debug in Low Power mode enabled. 10:15:20 : Device ID:0x439 10:15:20 : Device flash Size : 64KBytes 10:15:20 : Device family :STM32F301x4-x6-x8/F302x4-x6-x8/F318xx 10:15:44 : [Blink_LED1.hex] opened successfully. 10:15:44 : [Blink_LED1.hex] checksum : 0x0007A520 10:16:58 : Memory programmed in 0s and 578ms. 10:16:58 : Verification...OK 10:16:58 : Programmed memory Checksum: 0x0007A520
コード修正
点滅の間隔を0.5s, 2sずつ繰り返すサンプルは下記の通り
#define BLINK_TICKS1 (500) #define BLINK_TICKS2 (2000) int sw = 1; while (1) { if(sw) { HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(BLINK_TICKS1); sw = 0; } else { HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(BLINK_TICKS2); sw = 1; } }