STM32学习笔记(2)- 软件keil5安装和新建工程

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。

最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com

软件安装

keil5 MDK

 如果已经安装keil5 C51,可以放在同一个安装目录下,这样MDK和C51就可以共存。

 安装时间较久,耐心等待即可。

安装器件支持包

因为ARM芯片型号太多,可选择特定的支持包安装

新建工程-Software Packs(为STM32系列支持包)

新建工程-Legacy Device Database(为C51系列支持包)

离线安装

双击安装STM32F1XX即可

在线安装(拓展部分)

防止以后开发新的芯片找不到型号 

需联网,下载较慢

 国产芯片GD32F103C8

安装完后关掉整个界面即可

 然后新建工程选择对应的支持包就好。

软件注册

点击ADD LIC 

安装STLINK驱动 

 此电脑-右键-属性-设备管理器

说明电脑没有安装STLINK的驱动 

 双击对应的安装即可,设备管理器-通用串行总线  查看到ST-LINK就是安装好了

安装JLINK驱动

安装USB转串口驱动

这个USB转串口的芯片是CH340,和51单片机一样

 然后在设备管理器-端口-CH340表示安装成功。

新建工程

STM32程序编写分三种:

一是寄存器,和C51一样,直接对寄存器配置;

二是库函数,使用ST官方封装好的函数来间接配置寄存器。本教程使用此方法。

三是基于HAL库,用图形化界面快速配置STM32,能快速上手,但会对底层不了解。

以下为库函数的目录

下面开始新建库函数的工程

1、新建一个文件夹来存工程

如D:\software\STM32project

2、新建工程模板

打开keil5 - project - new uVision project -D:\software\STM32project - 新建文件夹(2-1 工程模板)- Project 

3、复制启动文件

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 把这些启动文件复制到 2-1 工程模板 文件夹 的新建文件夹Start中

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x的

stm32f10x.h文件是STM32的头文件、

两个system文件是用来配置时钟的,这三个文件同样复制到Start文件中。

4、内核寄存器的文件 

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport的两个cm3文件也复制到Start文件夹

到这里,工程的必要文件已复制完成。

 5、添加启动文件到工程中

把project-target-Source Group 1的名称改为Start

添加启动文件,选中后点击add

 

 Start文件夹中的.c、.h文件都要添加进来。

这些都是STM32基础的、不需修改的文件。

6、工程选项添加头文件路径

 7、新建main函数

在2-1 工程模板文件夹中新建User文件夹

 插入头文件后,写个main空函数,最后一行要是空行,不然会有警告。

#include "stm32f10x.h"                  // Device headerint main(void)
{while(1){}}

 然后点击build按钮,编译并建造工程,显示0错误、0警告就说明新建工程成功。

CTRL+鼠标滚轮可缩放页面

点击扳手工具,选择UTF8,防止中文乱码;左下角TAP改为4

8、STLINK下载程序 

点击魔术棒-debug-选择STLINK下载

 点击settings

 确认后重新编译一次,无错误即可点击load,下载程序进STM32

9、新建Library

这里的步骤是为了使用库函数,需要做的一些操作。

在2-1 工程模板文件夹中新建Library文件夹

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src中的文件都是库函数的源文件,把这些文件都复制到Library文件夹

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc中的文件都是库函数的头文件,也把这些文件都复制到Library文件夹

回到keil5,同样在target右键,添加组Library,右键添加已存在的文件,打开Library,CTRL+A,ADD。

还需再添加一个文件才能使用库函数,D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template的这三个文件复制到User文件夹中,并在keil5的User组中添加进来

还需要一个宏定义才能用库函数, 在stm32f10x.h中找到字符串(USE_STDPERIPH_DRIVER)复制,粘贴在魔术棒 - C/C++ - Define中,这样就可包含在库函数中。

同样,在魔术棒 - C/C++ - Include paths中添加User和Library的路径

点击三个箱子的按钮,可以移动target组的位置

 10、点灯

这里用PC13点亮STM32核心板上的灯为例子

#include "stm32f10x.h"                  // Device headerint main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//配置时钟(选择外设,选择状态)GPIO_InitTypeDef GPIO_Initstructure;//定义GPIO结构体GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Initstructure.GPIO_Pin = GPIO_Pin_13;GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13设为高电平GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13设为低电平GPIO_Init(GPIOC,&GPIO_Initstructure);//配置端口模式(选择哪个GPIO,参数的结构体)while(1){}}

11、新建工程步骤总结

 ​​​​​

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

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

相关文章

​ 翻译 《The Old New Thing》

今天开始,为大家翻译微软优秀的技术专栏 The Old New Thing。 由微软高级工程师 Raymond Chen 撰写。该专栏起初是一个博客,后来也出版了同名书籍。专栏主要围绕 Windows 操作系统的开发和设计展开,涵盖了 Windows 平台的历史、技术细节、编程…

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中,参数化是非常重要的,参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先,我们需要创建一个逗号分隔的值(CSV)文件,其中…

http和socks5代理哪个好?

HTTP代理和SOCKS5代理各有其优缺点,但就隐蔽性而言,SOCKS5代理通常比HTTP代理更隐蔽。以下是它们的比较: HTTP代理: 透明性较高:HTTP代理在HTTP头中会透露原始客户端的IP地址,这使得它相对不太隐蔽。…

uni-app纵向步骤条

分享一下项目中自封装的步骤条&#xff0c;存个档~ 1. 话不多说&#xff0c;先看效果 2. 话还不多说&#xff0c;上代码 <template><!-- 获取一个数组&#xff0c;结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…

【Flink】Flink 处理函数之基本处理函数(一)

1. 处理函数介绍 流处理API&#xff0c;无论是基本的转换、聚合、还是复杂的窗口操作&#xff0c;都是基于DataStream进行转换的&#xff0c;所以统称为DataStreamAPI&#xff0c;这是Flink编程的核心。 但其实Flink为了更强大的表现力和易用性&#xff0c;Flink本身提供了多…

Qt程序可执行文件打包

目录 一、新建一个目录二、命令行2.1 添加临时变量2.2 打包命令 三、添加动态库四、普通 Qt 项目打包 Qml 项目打包 笔者写的python程序打包地址&#xff08;https://blog.csdn.net/qq_43700779/article/details/136994813&#xff09; 一、新建一个目录 新目录(例如test)用以…

Vue.js前端开发零基础教学(三)

目录 2.6 计算属性 2.7侦听器 2.8 样式绑定 2.8.1 绑定class属性 2.8.2 绑定style属性 2.9 阶段案例——学习计划表 2.6 计算属性 概念&#xff1a;Vue提供了计算属性来描述依赖响应式数据的复杂逻辑。 计算属性可以实时监听数据的变化&#xff0c;返回一个计算…

真假“长文本”,国产大模型混战

文&#xff5c;郝 鑫 Kimi有多火爆&#xff1f;凭一己之力搅乱A股和大模型圈。 Kimi概念股连日引爆资本市场&#xff0c;多个概念股随之涨停。在一片看好的态势中&#xff0c;谁都想来沾个边&#xff0c;据光锥智能不完全统计&#xff0c;目前&#xff0c;至少有包括读客…

【蓝桥杯知识点】浮点数二分(开n次方根再也不会超时啦!)

今天继续学习基础算法&#xff01;这篇文章介绍了二分的另一种应用——浮点数二分&#xff0c;可以用于开n次方根的计算&#xff0c;会使时间大大缩短&#xff01;我偷偷问过电脑编译器了&#xff0c;它说它喜欢优化过的算法哈哈哈哈~相信你也会喜欢的&#xff01; PS&#xff…

现代化应用部署工具-Docker

Docker 简介 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上。 Docker部署的优势 通过使用Docker等容器技术&#xff0c;可以将应用程序及其依赖项…

构建品牌故事:Kompas.ai在叙事营销中的应用

引言 在数字化和全球化的浪潮中&#xff0c;品牌建设已经从单一的产品竞争演变为品牌故事的较量。叙事营销&#xff0c;作为一种通过讲述故事来传递品牌价值和理念的策略&#xff0c;已经成为连接品牌与消费者情感的桥梁。本文将深入探讨叙事营销的重要性&#xff0c;详细介绍K…

路由 (hash模式和history模式)

首先我们了解一下资源请求&#xff1a; 1.什么是资源 在浏览器需要某一个数据或文件进行解析或者浏览器在解析某个脚本的时候需要数据进行DOM渲染等工作&#xff0c;那么这个数据或文件就是浏览器的资源 2.资源怎么获取 浏览器的资源都必须通过资源请求的方式或从缓存中调出…

【Java程序设计】【C00371】基于(JavaWeb)Springboot的社区防疫物资申报系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

MapReduce配置和Yarn的集群部署

一、集群环境&#xff0c;还是如下三台服务器 192.168.32.101 node1192.168.32.102 node2192.168.32.103 node3 二、YARN架构 YARN&#xff0c;主从架构&#xff0c;有2个角色 主&#xff08;Master&#xff09;角色&#xff1a;ResourceManager从&#xff08;Slave&#x…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(三)—— 随机梯度下降

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 这篇文章中&#xff0c;咱们将使用Keras和TensorFlow…

看似简单的SQL,实则就是简单

加班遇到一个SQL问题&#xff0c;本想把别人的SQL改下成SparkSQL&#xff0c;在YARN上运行&#xff0c;然而数据一直对不上。 原SQL ⚠️说明&#xff1a;a.id&#xff0c;b.id没有空的&#xff0c;数据1:1&#xff0c;b.name可能存在空的 select a.id,b.id,b.name from tab…

JDK1.6、1.7、1.8内存区域的变化?

JDK1.6、1.7/1.8内存区域发生了变化&#xff0c;主要体现在方法区的实现&#xff1a; JDK1.6使用永久代实现方法区&#xff1a; JDK1.7时发生了一些变化&#xff0c;将字符串常量池、静态变量&#xff0c;存放在堆上 在JDK1.8时彻底干掉了永久代&#xff0c;而在直接内存中划出…

【每日八股】Java基础经典面试题4

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;如果你也在复习的话不妨…

阿里的库存秒杀是如何实现的?

一、阿里的库存秒杀的实现 阿里有很多业务&#xff0c;几十上百个业务线&#xff0c;各自都有一些需要做抢购、秒杀、热点扣将的场景。他们都用哪些方案呢? 我看了很多资料&#xff0c;也找了很多人做交流&#xff0c;最终得到的结论是啥都有&#xff0c;主要总结几个主流的&…

Linux离线部署gitLab及使用教程

一、下载gitLab的linux系统rpm包 地址&#xff1a;Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 找到这个最新版 点击下载 二、上传到linux系统 笔者是在windows系统下的vmware虚拟机中部署安装的&#xff0c;虚拟机中安装了cent…