当前位置: 首页 > news >正文

创建HAL版本MDK工程模板

1下载STM32Cube官方固件包

进入ST官网,注册,登录

搜索对应芯片固件包

我的是f1系列

点击get software

下载对应版本

解压,里面有如下文件

2创建模板文件夹

先创建如下文件夹

文件夹名称作用
Drivers存放与硬件相关的驱动层文件
Middlewares存放中间层文件
Output存放工程编译输出文件
Projects存放 MDK 工程文件
Users存放 HAL 库用户配置文件、main.c、中断处理文件,以及分散加载文件

Drivers 文件夹里面又包含了 4 个文件夹,它们的作用如下:

文件夹名称作用
BSP存放开发板板级支持包驱动代码,如各种外设驱动
CMSIS存放 CMSIS 底层代码,如启动文件(.s 文件)等
SYSTEM存放系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等
STM32F1xx_HAL_Driver存放 ST 提供的 F1 系列 HAL 库驱动源码

BSP:空着

CMSIS:到之前下载的官方固件包下改动两个地方

把整个Device文件夹粘贴到CMSIS文件夹下

此外CMSIS文件夹下还要创建一个Include文件夹,包含如下文件

这些文件可以STM32CubeMX 随便生成一个工程文件,然后找到下面这些文件,直接拷过来即可

SYSTEM:从正点原子项目下拷贝三个文件夹

STM32F1xx_HAL_Driver:直接从固件包里拷过来

Middlewares:空着

Output:空着

Projects:创建MDK-ARM

Users:拷贝三个文件过来

在创建一个main.c,内容如下

#include "sys.h"
#include "uart1.h"
#include "delay.h"

#define LED_CLK()       __HAL_RCC_GPIOB_CLK_ENABLE()
#define LED_GPIO        GPIOB
#define LED_PIN         GPIO_PIN_8

void led_init(void);                       /* LED初始化函数声明 */

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    led_init();                         /* LED初始化 */
    uart1_init(115200);
    printf("running...\r\n");
    while(1)
    { 
        HAL_GPIO_WritePin(LED_GPIO,LED_PIN,GPIO_PIN_SET);
        delay_ms(500);
        HAL_GPIO_WritePin(LED_GPIO,LED_PIN,GPIO_PIN_RESET);
        delay_ms(500); 
    }
}

/**
 * @brief       初始化LED相关IO口, 并使能时钟
 * @param       无
 * @retval      无
 */
void led_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;
    LED_CLK();                                             /* IO口时钟使能 */

    gpio_initstruct.Pin = LED_PIN;                         /* LED0引脚 */
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */
    gpio_initstruct.Pull = GPIO_PULLUP;                    /* 上拉 */
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(LED_GPIO, &gpio_initstruct);             /* 初始化LED0引脚 */
}

3新建工程框架

将工程保存到创建好的MDK-ARM下

选择对应的芯片,点击ok,点击close

4添加文件

创建目标及分组

向各分组添加文件

为什么加这个文件?

点击ok

有一个钥匙图标,声明他们是只读文件

找到对应文件所在目录

取消只读

点击确定

5魔术棒设置

Target选项卡

Output与Listing选项卡

C/C++选项卡

USE_HAL_DRIVER,STM32F103xB

Debug选项卡

Utilities选项卡​

6代码修改​

7烧录验证

相关文章:

  • 游戏引擎学习第199天
  • 如何访问和使用Sora:OpenAI视频生成模型的完整指南
  • 修改jar包里面的文件方法
  • WEB安全--内网渗透--LMNTLM基础
  • pom导包成功,但是就是无法使用相关类,同时报错:Library:Maven ‘xxx‘ has broken path
  • 【ESP32】ESP32物联网应用:MQTT控制与状态监测
  • SPSS系列1—无聊的列联表卡方检验
  • 【4】数据结构的循环链表章
  • MySQL 存储过程的实用技巧与最佳实践
  • Business English Certificates (BEC) 高频词汇背诵
  • 【C / C++】蓝桥第27场月赛
  • vue2 vue3 响应式差异
  • Android NDK C/C++交叉编译脚本
  • c++使用gstreamer录屏+声音
  • JVM中常见的垃圾回收器(Garbage Collectors)
  • Angular 项目使用 pdf.js 及批注插件Elasticpdf 教程
  • React框架的Concurrent Mode
  • ROS Bag 数据裁剪教程
  • 1. 标准库的强依赖(核心原因)
  • Kafka 中的事务
  • 如何开网店具体步骤/企业网站seo公司
  • 搜索引擎网站建设/seo外链在线工具
  • wordpress插件手动升级/网站推广优化设计方案
  • 专业提供网站建设服务公司/广州百度竞价开户
  • 怎样申请一个免费的网站空间/深圳经济最新新闻
  • 衡水做网站多少钱/抖音竞价推广怎么做