基于keil搭建stm32项目

1.下载stm32cube的固件包

1.1 进入st的官网

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

 

 

posted @ 2024-04-04 18:43  navysummer_hardware  阅读(51)  评论(0编辑  收藏  举报