STM32——创建HAL库工程

第一步 新建工程文件夹

在这里插入图片描述

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

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

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引脚 */
}

在这里插入图片描述

课上给的参考版工程

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低,以L3级别为界,低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

华为配置在用户物理位置变化时部署业务随行示例(V200R006C00、V200R007C00、V200R008C00)

配置在用户物理位置变化时部署业务随行示例(V200R006C00、V200R007C00、V200R008C00) 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步骤配置文件 组网图形 图1 组网图 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步…

新建一个基于标准库的工程(STM32)

目录 1.新建存放工程的文件夹 2.打开KEIL5软件 3.新建一个本次工程的文件夹 4.添加工程的必要文件 4.1打开STM32的启动文件 ​编辑 4.2: 4.3添加内核寄存器文件 ​编辑 5.回到keil5软件,将刚才复制的那些文件添加到工程中 5.1添加一个启动文件&am…

浅谈WPF之样式与资源

WPF通过样式,不仅可以方便的设置控件元素的展示方式,给用户呈现多样化的体验,还简化配置,避免重复设置元素的属性,以达到节约成本,提高工作效率的目的,样式也是资源的一种表现形式。本文以一个简…

k8s-基础知识(Service,NodePort,CusterIP,无头服务,NameSpace,资源限制)

Node Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应…

x-cmd pkg | httpx - 为 Python 设计的下一代 HTTP 客户端库

目录 简介首次用户功能特点进一步探索 简介 HTTPX 是一个为 Python 设计的下一代 HTTP 客户端库,由 Tom Christie 创建。它提供了同步和异步的 API,并支持 HTTP/1.1 和 HTTP/2 协议。与 Requests 库类似,但增加了对异步请求的支持和 HTTP/2 …

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践)

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践) 一.like模糊查询、group by 分组 having 过滤 建表语句 create table student(id int PRIMARY KEY,name char(10),age int,sex char(5)); alter table student add height…

【TOP解刊】IEEE(trans)顶刊,国人绝对优势,同领域2个月录用,5天见刊!

工程技术类 • 顶刊解读 今天带来IEEE旗下工程技术领域顶刊,究竟这本高分期刊审稿情况如何呢?好投吗?一起来看看下文解析。如有投稿意向可重点关注,具体详情见下文: 01 期刊简介 IEEE Transactions on Power Electr…

FlashInternImage实战:使用 FlashInternImage实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

QDockWidget : 想要 top -> left -> rigt -> bottom 的布局实现

上图红圈中的实现,第一次想要实现,总会和想的不一样。 第一种情况 第二种情况 第三种情况 有时候为了达到一种效果,也算是煞费苦心了,且不说这个demo还是找的其他CSDN博主的,但是功夫不负有心人。 解决办法 先让 Doc…

[UI5 常用控件] 03.Icon, Avatar,Image

文章目录 前言1. Icon2. Avatar2.1 displayShape2.2 initials2.3 backgroundColor2.4 Size2.5 fallbackIcon2.6 badgeIcon2.7 badgeValueState2.8 active 3. Image 前言 本章节记录常用控件Title,Link,Label。 其路径分别是: sap.m.Iconsap.m.Avatarsap.m.Image 1…

01_ESP32 MicroPython开发环境搭建

一、工作原理 Python源代码->Python解释器(MicroPython)-->二进制代码(01010)-->硬件电路(ESP32)-->高低电平输出-->其他设备 二、准备工作: 硬件:ESP32开发版,有很多个版本可选,我这里用的是ESP-32开发板&…

K8s 安装部署-Master和Minion(Node)文档

K8s 安装部署-Master和Minion(Node)文档 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETC…

navicat 可以直接往 mysql导入excel表格

妈呀 还好 提前问了一下,不然哼哧哼哧在那里写,导入接口。。

05-TiDB 之 HTAP 快速上手

混合型在线事务与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 功能 HTAP 存储引擎:行存 与列存 同时存在,自动同步,保持强一致性。行存 OLTP ,列存 OLAPHTAP 数据一致性:作为一个分布式事务…

【王道数据结构】【chapter2线性表】【P43t15】

单链表有环&#xff0c;是指单链表的最后一个节点的指针指向了链表中的某个结点&#xff08;通常单链表的最后一个节点的指针域是空的&#xff09;。试编写算法判断单链表是否存在环。 #include <iostream>typedef struct node{int data;node* next; }node,*list;list I…

递归方法猴子吃桃问题

public class A {public static void main(String[] args) {System.out.println("第一天有&#xff1a;"f(1)"个");System.out.println("第二天有&#xff1a;"f(2)"个");System.out.println(".....");System.out.println(&…

代码随想录算法训练营第32天(贪心算法02● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

贪心算法 part02 122.买卖股票的最佳时机II解题思路 55. 跳跃游戏解题思路 45.跳跃游戏II &#xff08;来不及了 明天刷解题思路 122.买卖股票的最佳时机II 动态规划章节会重点讲买卖股票问题 本题解法很巧妙&#xff0c;大家可以看题思考一下&#xff0c;在看题解。 题目链接&…

C语言之指针的地址和指向的内容总结(八十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

前端工程化之:CSS工程化+Less

一、什么是Less&#xff1f; Less官网 Less中文网 Less 是一种更加简洁的样式代码&#xff0c;它非常像 CSS &#xff0c;但又不太一样&#xff0c;它让编写样式变得更容易。 Less 代码虽好&#xff0c;但它无法被浏览器识别&#xff0c;因此需要一个工具将其转换为纯正的 CS…