一、工程配置
- 将下载好的固件库添加到工程目录中,并在工程中添加相应的文件,以闪烁LED灯为例子。
- 新建user、proj文件夹。
- 复制
STM32Cube_FW_F1_V1.4.0\Drivers\STM32F1xx_HAL_Driver\Inc
里的 stm32f1xx_hal_conf_template.h
到user目录中,并重命名为stm32f1xx_hal_conf.h
。 - 复制
STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Templates\Src
文件夹里面的 stm32f1xx_it.c
以及 STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Templates\Inc
文件夹里面的 stm32f1xx_it.h
到user文件夹中。如果stm32f1xx_it.c
中SysTick_Handler
为空的话,请在该文件的放置头文件的地方添加#include "stm32f1xx.h"
如下图所示:
,
并在SysTick_Handler
函数中添加HAL_IncTick();
,如下图所示:
。 - 新建一个C文件,输入例程。
- 添加程序代码,
STM32Cube_FW_F1_V1.4.0\Drivers\STM32F1xx_HAL_Driver\Src
文件夹里面的单片机驱动程序(根据需要添加)、 STM32Cube_FW_F1_V1.4.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates
文件夹里面的 system_stm32f1xx.c
、 STM32Cube_FW_F1_V1.4.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm
文件夹里面的启动文件(根据实际情况添加)、 user
文件夹里面的 stm32f1xx_it.c
和 gpio_demo.c
添加到工程的程序文件如下图所示:

- 添加的头文件路径如下图所示:

- 在c/c++编译器选项宏定义一栏中添加
STM32F103xE,USE_HAL_DRIVER
(查看stm32f1xx.h
),如下图所示:

- 编译
二、例程
#include "stm32f1xx.h"
void bsp_led_init( void )
{
GPIO_InitTypeDef gpioInitStructure;
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE();
gpioInitStructure.Mode = GPIO_MODE_OUTPUT_PP;
gpioInitStructure.Pull = GPIO_NOPULL;
gpioInitStructure.Speed = GPIO_SPEED_FREQ_LOW;
gpioInitStructure.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOD, &gpioInitStructure);
gpioInitStructure.Mode = GPIO_MODE_OUTPUT_PP;
gpioInitStructure.Pull = GPIO_NOPULL;
gpioInitStructure.Speed = GPIO_SPEED_FREQ_LOW;
gpioInitStructure.Pin = GPIO_PIN_14;
HAL_GPIO_Init(GPIOG, &gpioInitStructure);
}
void bsp_led_run( void )
{
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_13);
HAL_Delay(30);
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
HAL_Delay(70);
}
int main( void )
{
#ifdef USE_HAL_DRIVER
HAL_Init();
#endif
bsp_led_init();
while(1)
{
bsp_led_run();
}
}