当前位置:   article > 正文

STM32——创建HAL库工程_一个新的stm32hal库项目需要包含哪些文件夹

一个新的stm32hal库项目需要包含哪些文件夹

第一步 新建工程文件夹

在这里插入图片描述

所有文件夹存放的内容:
在这里插入图片描述

第二步 拷贝/新建工程相关文件

1、Drivers(创建如下文件夹,除readme.txt)

在这里插入图片描述
文件夹存放的内容:
在这里插入图片描述

2、Middlewares和output暂时不需要创建(目前用不到)

3、Projects(创建MDK-ARM文件夹)

在这里插入图片描述

4、User(这里是只把需要的.c/.h文件拿过来,全部都复制过来会导致项目文件过大)

在这里插入图片描述

在这里插入图片描述

第三步 打开Keil5新建工程

1、在此路径下进行新建工程,点击保存即可

在这里插入图片描述

2、选择自己的开发板型号,我是战舰STM32F103ZET6

在这里插入图片描述

3、这边没啥用,直接点取消就行

在这里插入图片描述

4、添加文件(下图为添加成功的截图,可以对照左侧项目文件)

注意:main.c文件除外,其他都应在此步添加完成
在这里插入图片描述

第四步 设置魔法棒

此图为魔法棒所有选项卡需要设置的功能
在这里插入图片描述

1、Target选项卡:根据自己的开发板最大晶振频率设置,我的板子是8.0Mhz

在这里插入图片描述

2、Output选项卡:设置输出路径,勾选生成hex文件

在这里插入图片描述

3、Listeing选项卡:和上一步相同

在这里插入图片描述

4、C/C++选项卡:设置全局宏定义,设置优化等级,C99Mode,设置头文件包含路径

在这里插入图片描述

5、Debug选项卡:选择自己的仿真器工具并点击右侧settings进行配置

在这里插入图片描述
这边注意端口的选择和最大时钟频率
在这里插入图片描述

6、Utilities选项卡

在这里插入图片描述

第五步 创建main.c文件并加入到工程的User目录下

1、创建main.c

在这里插入图片描述

2、仿照第三步的第四条,将main.c文件加入到工程中

在这里插入图片描述
最终在main.c进行编写代码即可,此处附上测试代码

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./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引脚 */
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

在这里插入图片描述

课上给的参考版工程

链接:https://pan.baidu.com/s/1MUkSk0-GtwpLyD4IMJq4dA
提取码:fr9b

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/433088?site
推荐阅读
相关标签
  

闽ICP备14008679号