STM32F103ZET6开发板【项目工程创建】+具体实现步骤流程

硬件介绍

芯片为STM32F103ZET6


STM32F103 资源简介

STM32 的优异性

1,超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。

2,超多的外设。STM32 拥有包括:FMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、 ADC、DAC、RTC、DMA 等众多外设及功能,具有极高的集成度。

3,丰富的型号。STM32 仅 M3 内核就拥有 F100、F101、F102、F103、F105、F107、F207、 F217 等 8 个系列上百种型号,具有 QFN、LQFP、BGA 等封装可供选择。同时 STM32 还推出 了 STM32L 和 STM32W 等超低功耗和无线应用型的 M3 芯片,另外,ST 还推出了 STM32F4/F7/H7 等更高性能的芯片。

4,优异的实时性能。150 个中断,16 级可编程优先级,并且所有引脚都可以作中断输入。

5,杰出的功耗控制。STM32 各个外设都有自己的独立时钟开关,可以通过关闭相应外设 的时钟来降低功耗。 6,极低的开发成本。通过串口即可下载程序,而且相应的仿真器也很便宜,支持 JTAG&SWD 调试接口,最少仅 2 个 IO 口即可实现仿真调试,极大的降低了开发成本。

STM32 命名规则


工程创建

一、文件导入工作

1.新建项目为project,在project中添加如下文件夹

2.在Drivers里继续创建,如下文件夹

3.在CMSIS中导入.c/.h/.s文件

4.在STM32F1xx_HAL_Driver导入

5.SYSTEM导入

其余文件夹操作不进行具体展示,获得上述完整版文件导入工作,可点击跳转获取资源。


二、具体创建

1.打开keil 5 创建工程文件到Projects中

2.找到所需芯片(进入后选择取消,创建好Target1)

3.添加组和文件

4.全部添加完成加入main.c文件后如下所示

5.定义define和添加相对路径

STM32F103xE,USE_HAL_DRIVER

 ..\Drivers\CMSIS\Include

..\Drivers\CMSIS

..\Drivers\STM32F1xx_HAL_Driver\Inc

..\User\Inc

..\Drivers\SYSTEM

6.修改晶振为8MHz

7.main.c代码编写

该代码为流水灯实现效果。


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

8.编译

 

至此,项目创建工作全部完成。

 


 感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!

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

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

相关文章

CyberGlove触觉反馈手套遥操作机器人灵巧手解决方案

CyberGlove触觉反馈手套确实可以实时捕捉运动信号和触觉反馈,并将其重新定位到人形机器人上。CyberGlove触觉反馈手套遥操作机器人是通过手套上的传感器捕捉手部动作,将信号传输给机器人,同时接收机器人反馈的触觉信息,实现远程操…

[C#]C# winform部署yolov13目标检测的onnx模型

yolov13官方框架:github.com/iMoonLab/yolov13/releases/tag/yolov13 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.3 【效果展示】 【调用代码】 using System; using System.Collections.Generic; using System.ComponentMode…

创客匠人 AI 赋能:创始人 IP 打造的效率革命与信任重构

在注意力经济时代,创始人 IP 面临内容生产效率与信任构建的双重挑战。创客匠人 2025 年战略升级为 “IP 变现整体解决方案服务商”,其推出的 AI 销售信、免训数字人、智能客服三大工具,正通过技术重构破解行业痛点,为知识变现开辟…

飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究

以下是为您撰写的《飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究》技术报告,包含完整的理论分析、控制策略设计及MATLAB/Simulink仿真实现细节: 飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究 摘要 针对双馈感应发电机(DFIG)参与电网一次调频时存在…

临床开发计划:从实验室到市场的战略蓝图

一、临床开发计划概述 1.1 定义与重要性 1.1.1 CDP核心定义 临床开发计划(CDP)是药物、生物制品或医疗器械从实验室走向市场的核心路线图,详细规划临床研究及其策略、时间表和资源需求,以满足监管机构审批要求。 1.1.2 指导意义 CDP为开发团队提供清晰指引,指导资源规划…

【大模型实战】微调Qwen2.5 VL模型,增强目标检测任务。

文章目录 制作数据集使用微调的模型制作数据集 制作数据集 这个章节将详细解析一个将Labelme标注数据集转换为Qwen2.5-VL模型训练格式的Python脚本。该工具实现了图像大小调整、边界框坐标转换和数据格式标准化等功能。生成适用Qwen2.5-VL的数据集。 核心功能概述 图像处理&a…

【python实用小脚本-118】基于Flask的用户认证系统:app.py、forms.py与user.py解析

在当今的网络应用中,用户认证是一个不可或缺的功能。无论是社交平台、电商平台还是企业管理系统,都需要确保只有授权用户才能访问特定的资源。本文将详细介绍一个基于 Flask 框架的用户认证系统,该系统由三个主要文件组成:app.py、…

phpstudy apache伪静态.htaccess文件置空丢失问题解决

phpstudy apache伪静态.htaccess文件置空丢失 在使用phpstudy本地部署项目的时候,创建网站-根目录选择public等运行目录,并且点击确认后,会碰到原本项目中的apache伪静态.htaccess文件被置空丢失的问题,导致项目无法正常访问。 解…

【thinkphp5】Session和Cache记录微信accesstoken

记录一个项目实际遇到的坑,不要把token存放在session,要存在在cache里面!! 因为Session并不能设置expire过期时间,Session::set()方法第三个参数是作用域,而非过期时间!!&#xff0…

网络协议完全指南:从HTTP长短连接到TCP-UDP的深度对话

🌐 网络协议完全指南:从HTTP长短连接到TCP-UDP的深度对话 本文采用对话形式,通过小李和小王的问答,深入浅出地讲解网络协议、长短连接等核心概念,帮助读者建立完整的网络知识体系。 引言 在Java后端开发中&#xff0c…

04-StarRocks集群运维FAQ

StarRocks集群运维FAQ 概述 本文档整理了StarRocks集群运维过程中常见的问题和解决方案,涵盖了集群管理、节点维护、监控告警、故障处理等各个方面,帮助运维人员高效管理StarRocks集群。 集群管理FAQ Q1: 如何查看集群状态? A: 集群状态查看方法: 1. 查看FE节点状态 …

通过Prompt提示构建思维链

《DEEPSEEK原生应用与智能体开发实践 王晓华 书籍 图书》【摘要 书评 试读】- 京东图书 思维链技术开启了人工智能通向人类智能的崭新路径。它让模型不再仅仅是机械地执行指令,而是开始具备类似人类的思考方式,能够理解问题的本质,进行深层次…

OpenCV边缘填充方式详解

一、边缘填充概述 在图像处理中,边缘填充(Border Padding)是一项基础而重要的技术,特别是在进行卷积操作(如滤波、边缘检测等)时,处理图像边缘像素需要用到周围的像素值。由于图像边缘的像素没…

如何评估RAG系统?全面指标体系

构建一个可靠的 检索增强生成(Retrieval-Augmented Generation, RAG)系统,不仅要关注模型的构建,更重要的是对系统性能进行科学、系统的评估。评估不仅衡量系统的效果,也为迭代优化提供依据。 本文将围绕 RAG 系统的评…

力扣-合并区间

题目 56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 解析: 先按开始维度排序&#xff0c;之后依次合并&#xff0c;如果开头 < 当前区间的最后就合并&#xff0c;> 就开辟新区间 代码: class Solution {public int[][] merge(int[][] intervals) {int n in…

【软考高级系统架构论文】论基于构件的软件开发方法及其应用

论文真题 基于构作的 软件开发 (Component-Based Software Development,CBSD) 是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。基于构件的软件系统中的构件可以是COTS (Commercial-Off-the-Shelf) 构件,也可以是通过其它途径获得的构件(如自…

recipes的版本比较老如何更新到新版本?

在 Yocto 项目中,当你发现 “meta-openembedded” 层中的某些 recipe 版本太旧,而你想使用更新版本时,最佳实践是在你自己项目的自定义层 (custom layer) 中使用 “bbappend” 文件进行覆盖或升级。 核心思路: 不要直接修改 “meta-openembedded” 层的 recipe ( “*.bb”…

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

目录 一、什么是 NPU? 二、NPU 与 CPU/GPU/DSP 对比 三、NPU 的工作原理 核心结构: 数据流架构: 四、NPU 芯片架构(简化图) 五、NPU 的优势 六、NPU 应用场景 视觉识别 语音识别 自动驾驶 智能监控 AIoT 设备 七、主流 NPU 芯片/架构实例 八、开发者工具生…

【NLP】使用 LangGraph 构建 RAG 的Research Multi-Agent

本文中&#xff0c;我们介绍了一个使用LangGraph开发的RAG的Research Multi-Agent工具的实际项目。该工具旨在解决需要多个来源和迭代步骤才能得出最终答案的复杂问题。它使用混合搜索和rerank步骤来检索文档&#xff0c;还结合了自我纠正机制&#xff0c;包括幻觉检查过程&…

【Docker基础】Docker容器管理:docker restart详解

目录 1 docker restart命令概述 1.1 命令作用 1.2 与相关命令对比 2 命令语法详解 2.1 基础语法 2.2 核心参数说明 3 核心原理深度解析 3.1 信号传递机制 3.2 状态转换 4 典型应用场景 4.1 服务配置更新 4.2 故障恢复流程 5 进阶使用技巧 5.1 组合命令应用 5.2 …