新建一个STM32的工程

一、SMT32开发方式

1、基于寄存器的方式:和51单片机开发方式一样,是用程序直接配置寄存器,来达到我们想要的功能,这种方式最底层、最直接、效率会更高一些,但是STM32的结构复杂、寄存器太多,所以不推荐基于寄存器的方式

2、基于标准库(库函数的方式):使用ST官网提供的封装好的函数,通过调用这些函数间接地配置寄存器,ST对寄存器封装的比较好,所以这种方式既能满足对寄存器的配置,对开发人员也比较友好,有利于提高开发效率

3、基于HAL库的方式:可以用图形化界面快速配置STM32,这个比较适合快速上手STM32的情况,但是这种方式隐藏了底层逻辑

二、基于库函数的方式

1、需要准备一个STM32库函数的压缩包

2、新建一个基于标准库的工程

建立一个存放工程的文件夹,把所有32个工程都放在里面

打开keil5软件,选择【project】=>【New uVision Project】

 

 

弹出一个keil软件新建工程小助手,帮助我们快速新建工程,暂时不用这个小助手

3、添加工程的必要文件

STM32是内核和内核外围的设备组成,这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件

工程必要文件就复制完成了

 4、将复制的必要文件添加到工程里

 首先添加一下启动文件,这个启动文件有很多分类,我们只能添加其中一个

 

选择md后缀是因为我们选择的是STM32F103,中容量产品

 5、在工程选项里添加上这个文件夹的头文件路径,不然软件找不到.h文件

6、新建一个main函数

在工程文件夹下,新建一个User文件夹,main函数就放在这个文件夹里

keil里,在Target这里右键,点击添加组

在main.c里,右键插入头文件,选择stm32发0x.h

写一个main函数(main函数是一个int型返回值,void参数的函数)

这个工程目前还没有添加STM32的库函数,所以现在还是一个基于寄存器开发的工程

三、通过配置寄存器完成点灯的操作

1、调节字体大小

 选择UTF-8编码格式,防止中文乱码的问题

 2、拿出STM32的最小系统板、STLINK和四根母对母的杜邦线

按照插针边上的标识,把3.3V、SWDIO、SWCLK、GND对应连接好,并将STLINK插在电脑上

插上电源后,这个板子上的电源灯应该会常亮,另一个连接在PC13口上的灯默认应该是闪烁状态,这是芯片里的一个测试程序

3、在keil5中,配置调试器

#include "stm32f10x.h"                  // Device headerint main(void)
{RCC->APB2ENR=0x00000010;GPIOC->CRH=0x00300000;GPIOC->ODR=0x00002000;	//全为0时PC13的灯亮起,ODR为2000时PC13灯灭了while	(1){}
}

 四、为工程添加库函数

1、打开工程文件夹,新建一个【Library】文件夹,用来存放库函数

 2、keil里,在Target这里右键,点击添加组

打开Library,Ctrl+A选择全部文件,选择【Add】

 3、添加库函数头文件包含关系的相关文件

4、宏定义

头文件右键,打开文件

滑到文件最下面,看到条件编译语句,如果你定义了USE_STDPERIPH_DRIVER(使用标准外设)这个字符串,下面这个include conf.h语句才有效

 在Define栏目粘贴这个字符串,这样才能包含标注外设库,以及头文件路径User和Library路径也都添加上

 将Library向上调一下,将不用更改的文件夹放在最上面

 五、用库函数实现点灯的操作

不自动提醒的按照以下操作(或者按一下快捷键Ctrl+Alt+空格

 点击函数,右键跳到函数定义

#include "stm32f10x.h"                  // Device headerint main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);	//GPIOC的外设时钟就配置好了GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);
//	GPIO_SetBits(GPIOC,GPIO_Pin_13);	//将PC13号口置为高电平GPIO_ResetBits(GPIOC,GPIO_Pin_13);	//将PC13号口置为低电平while	(1){}
}

六、总结

1、建立工程文件夹,Keil中新建工程,选择型号

2、工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹

这一步是为了添加工程文件准备的,建文件夹是因为文件比较多需要分类管理一下,需要用的文件夹一定要复制到工程文件夹里面来

3、工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里

在keil里方便管理文件,因为keil没法直接添加文件夹,所以要重复一下,在keil里建立分组,然后添加文件,这个添加文件是把所有的.h文件和.c文件都添加进来了,因为.h文件是不参与编译的,所以很多工程都不添加.h文件,但是添加.h文件比较方便经常打开看

4、工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹

因为Start、Library、User文件夹是自己建立的,keil软件它并不知道,所以要用自己文件夹里面的.h文件,就必须声明一下这个路径

5、工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER

使用库函数的条件编译,使用库函数就必须定义这个,另外其他工程在这里还声明了一个STM32F10X_MD的字符串,但是keil5新建工程后自动就声明好了,不需要额外声明了

6、工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

这个就是选择调试器来进行下载的选项了,用STLINK就选择STLINK的那一项即可

工程框架

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

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

相关文章

【408真题】2009-15

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

OmicsTools新增了22种发表级的配色方案

OmicsTools新增了22种发表级的配色方案 我开发了一款本地电脑无限使用的零代码生信数据分析作软图神器电脑软件OmicsTools,欢迎大家使用OmicsTools进行生物医学科研数据分析和作图,该软件件能让大家在不需要任何编程和代码编写的基础上,分析…

电子电器架构 - AUTOSAR软件架构Current Features in a Nutshell

电子电器架构 - AUTOSAR软件架构Current Features in a Nutshell 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的…

【笔记】Pytorch安装配置

参考视频 安装前建议预留至少10个G的空间,会省下很多麻烦 查看安装是否成功,可以在Anaconda Prompt里输入conda list查看conda环境是否配置了pytorch/torchvision 1.安装anaconda 2.安装 CUDA CUDA在官网直接安装即可,需要先查看自己电脑…

云原生安全攻防--快速识别虚拟机、Docker和K8s集群环境

今天我们将一起学习一个非常实用的技巧,快速识别云原生环境。 对于攻击者而言,随着云原生应用普及,当攻击者获得一个shell权限时,那么这个shell可能处于虚拟主机里,也有可能在一个Docker环境里,或者在K8s集…

创客贴:极简高效的智能平面设计神器测评

给大家推荐一款智能平面设计作图软件——创客贴,简单来说,就是给那些需要频繁进行平面设计的人提供帮助的。它作为一款在线图片编辑器,可以免费使用,让你轻松进行创意设计。创客贴不仅提供了海量正版设计模板和图片素材&#xff0…

vue3 依赖-组件tablepage-vue3版本1.1.2~1.1.5更新内容

github求⭐ 可通过github 地址和npm 地址查看全部内容 vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例-汇总 vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅰ&#…

美甲店会员预约系统管理小程序的作用是什么

女性爱美体现在方方面面,美丽好看的指甲也不能少,市场中美甲店、小摊不少,也跑出了不少连锁品牌,70后到00后,每个层级都有不少潜在客户,商家需要获取和完善转化路径,不断提高品牌影响力与自身内…

002 仿muduo库实现高性能服务器组件_整体框架

​🌈个人主页:Fan_558 🔥 系列专栏:仿muduo 🌹关注我💪🏻带你学更多知识 文章目录 前言项目框架小结 前言 本文不会包含任何项目模块的代码,旨在向你介绍项目具体分为哪几个模块&am…

作用域插槽和具名插槽

在 Vue 2 中,具名插槽和作用域插槽是组件模板中非常强大的内容分发 API。它们允许开发者创建具有更复杂内容结构的组件,同时保持组件模板的清晰和可维护性。 具名插槽(Named Slots) 具名插槽允许你为插槽指定一个名字&#xff0…

从0开始学统计-如何计算总体均值的置信区间

1.什么是抽样误差? 抽样误差是统计学中一个重要概念,它指的是由于从总体中抽取样本而导致的样本统计量与总体参数之间的差异。简而言之,抽样误差是由于从总体中选取的样本并不能完全代表整个总体而引起的误差。 抽样误差的大小取决于多个因…

VBA技术资料MF157:创建每个标题的目录

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前我们写过一篇文章​​​​​​​,上面说的是如何利用串口对mcu进行控制,即如果利用串口实现mcu led灯的点亮和熄灭。输…

Yolov8训练自己的数据集(脱离ultralytics库)

最近在整理关于yolov8的相关内容,有个很大的问题,抛开yolov8性能不谈,yolov8代码的使用灵活性不如yolov5,尤其是对于一些新手或者对yolo框架不是很熟悉的人(这也是因人而异,有些人可能会喜欢v8代码的使用方式)。比如在…

(4)医疗图像处理:MRI磁共振成像-成像技术--(杨正汉)

目录 一、特殊成像技术 1.水成像技术 2.化学位移成像技术 二、成像辅助技术 1.脂肪抑制技术 2.磁化转移技术 3.流动补偿技术 4.空间饱和空间标记技术 5.生理门控及导航回波技术 所有的这些技术最终就是为了使得K空间通过傅里叶变化之后得到的图片变的更为清晰。 一、…

redis6.2.7安装

1、下载上传到服务器 从官下载redis,地址 https://redis.io/download/#redis-downloads 然后上传到服务器目录 app/apps目录下 2、安装gcc编译器 使用gcc --version命令测试是否已经安装了gcc编译环境,如果没有安装执行以下命令安装 yum install -y …

基于springboot+vue+Mysql的休闲娱乐代理售票系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【技术实操】银河高级服务器操作系统实例分享,TCP长连接与短连接详细说明

1.服务器环境以及配置 物理机/虚拟机/云/容器 物理机 处理器: HUAWEI Kunpeng 920 具体操作系统版本 Kylin-Server-10-SP1-Release-Build20-20210518- aarch64 内核版本 kernel-4.19.90-23.8.v2101.ky10.aarch64 2.问题现象描述 对TCP长连接有疑问 1、如何…

兴业证券 | 哪些行业在提价?

一方面, 部分行业年初以来PPI价格整体上涨,4月进一步提价;另一方面,部分行业年初以来PPI价格整体下跌或者涨幅不高,但4月开始出现边际提升。 前言:年初以来,“提价”是一条重要的投资线索。我们…

Unity Assembly Definition Dotween 引用

原理: 具体Unity程序集原理用法,暂时留坑,不介绍了,相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 :Dotween引用…