基于keil搭建stm32项目
1.下载stm32cube的固件包
1.1 进入st的官网
1.2 查找固件包
1.3 找到自己的硬件对应的系列的固件包
1.4 选择固件包点击进入后,点击获取软件
1.5 选择版本下载
2.创建项目相关的目录
2.1 创建项目相关的目录
2.2 给Drivers添加相关的驱动文件或者目录(BSP暂时用不上,创建一个空目录或者不创建均可)
2.3 配置中间层相关的文件或者目录(暂时用不上可以不配置)
2.4 配置User目录文件,以下文件从固件包的项目模板可以找到
3.创建keil工程
3.1 创建一个stm32工程
3.2 配置工程
文件路径:
组名 | 文件名 | 位置 |
Startup | startup_stm32f103xe.s | Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm |
Drivers/SYSTEM | delay.c | Drivers\SYSTEM\delay |
sys.c | Drivers\SYSTEM\sys | |
usart.c | Drivers\SYSTEM\usart | |
Drivers/STM32F1xx_HAL_Driver | stm32f1xx_hal.c | Drivers\STM32F1xx_HAL_Driver\Src |
stm32f1xx_hal_cortex.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_dma.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_gpio.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_gpio_ex.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_rcc.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_rcc_ex.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_uart.c | Drivers\STM32F1xx_HAL_Driver\Src | |
stm32f1xx_hal_usart.c | Drivers\STM32F1xx_HAL_Driver\Src | |
User | stm32f1xx_it.c | User |
system_stm32f1xx.c | Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates |
3.3 设置魔法棒
3.4 编写main.c
#include "../Drivers/SYSTEM/sys/sys.h" #include "../Drivers/SYSTEM/usart/usart.h" #include "../Drivers/SYSTEM/delay/delay.h" void led_init(void); /* LED初始化函数声明 */ int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */ delay_init(72); /* 延时初始化 */ led_init(); /* LED初始化 */ while(1) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); /* PB5置1 */ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); /* PE5置0 */ delay_ms(500); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET); /* PB5置0 */ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET); /* PE5置1 */ delay_ms(500); } } /** * @brief 初始化LED相关IO口, 并使能时钟 * @param 无 * @retval 无 */ void led_init(void) { GPIO_InitTypeDef gpio_initstruct; __HAL_RCC_GPIOB_CLK_ENABLE(); /* IO口PB时钟使能 */ __HAL_RCC_GPIOE_CLK_ENABLE(); /* IO口PE时钟使能 */ gpio_initstruct.Pin = GPIO_PIN_5; /* LED0引脚 */ gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */ gpio_initstruct.Pull = GPIO_PULLUP; /* 上拉 */ gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */ HAL_GPIO_Init(GPIOB, &gpio_initstruct); /* 初始化LED0引脚 */ gpio_initstruct.Pin = GPIO_PIN_5; /* LED1引脚 */ HAL_GPIO_Init(GPIOE, &gpio_initstruct); /* 初始化LED1引脚 */ }
3.5 编译运行