基于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 编译运行


浙公网安备 33010602011771号