STM32-新建工程(标准库)

目录

STM32F10x新建工程(标准库)

移植文件夹

新建工程

添加启动文件和必需文件

在工程中加载新添加的文件

在工程中添加文件路径

在工程中添加main函数

添加lib库

添加必需文件

添加宏定义


STM32F10x新建工程(标准库)

移植文件夹

移植文件夹为STM32F10x_StdPeriph_Lib_V3.5.0。 

新建工程

新建一个文件夹,存放工程。以桌面/STM32Program为例。

打开keil5--Project--New uVision Project--选择桌面的STM32Program文件夹--起工程名字:如STM32Program--保存。

keil5弹出选择芯片型号的页面--选择,如STM32F103VET6等。然后弹出芯片包管理页面,可以直接关闭。

到此,工程创建完毕。但该工程还无法使用,因为缺少了启动文件。

添加启动文件和必需文件

在移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm下选择复制对应的启动文件,如startup_stm32f10x_md.s

在新建的工程目录STM32Program下新建start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

回到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x目录下,复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h

在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

来到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport目录下,复制内核文件core_cm3.c、core_cm3.h

在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

在工程中加载新添加的文件

keil5上打开STM32Program工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。

双击左键默认的Groups下的Source Groups 1,修改名称为start。

然后在start的组下,添加新文件。依次添加:.s启动文件,core_cm3的源文件和头文件,除.s外的其余文件。

然后点击Manage Project Items的OK按钮即可。

在工程中添加文件路径

keil5上打开STM32Program工程,点击小控件:Options for Target 'xx'(控件图标为魔术棒)。

魔术棒的C/C++(AC6)选项-Include Paths,可看到包含路径框的右侧有个省略号的按钮,点击。

然后包含start文件夹路径,点击OK。

在工程中添加main函数

在工程目录下添加user文件夹,keil5打开工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。

添加新建组:user。点击OK。在keil5的工程中右击user文件夹,Add New Item to Group ‘user’,选择c文件,名称为mian,路径选择刚才创建的user文件夹。点击Add。

在mian.c中右键添加头文件,Insert '#include' file--stm32f10x.h。

然后写main函数。选择编译。

注意:user头文件路径别忘记添加。

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

编译后发现有很多错误,那是因为工程中keil5选用的是编译器6。

点击小控件:Options for Target 'xx'(控件图标为魔术棒)。在魔术棒的Target选项页中找到ARM Compiler,选择Use default compiler version 5。

再次编译,此时发现没有错误了。此时可以直接寄存器开发了,但如果需要标准库开发,还需要一些文件。

添加lib库

在STM32Program工程中新建lib文件夹。

然后打开STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver,该目录下有src文件夹和inc文件夹。把src文件夹和inc文件夹的所有文件复制到STM32Program工程的lib文件夹。

然后在keil5的工程中新建lib组加载新添加的文件和添加头文件路径。

添加必需文件

在STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下复制stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h文件。

粘贴到STM32Program工程的user文件夹。

然后在keil5的工程中user组加载新添加的文件和添加头文件路径。

添加宏定义

打开stm32f10x.h,光标去到文件最末尾,找到USE_STDPERIPH_DRIVER并复制。

然后点击魔术棒,来到C/C++选项页,在Define中粘贴USE_STDPERIPH_DRIVER。

点击OK。点击编译。没有错误了。此时已经创建好了。

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

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

相关文章

【Python】创建简单的Python微服务Demo与FastAPI

创建简单的Python微服务Demo与FastAPI 在微服务架构中,通过FastAPI框架创建一个简单的Python微服务Demo涉及多个步骤,包括定义服务、使用框架、进行通信等。在这篇文章中,我们将使用FastAPI框架创建两个简单的微服务,它们通过RES…

HBase安装配置:一键自动安装配置

使用shell脚本一键下载、安装、配置HBase(单机版) 1. 把下面的脚本复制保存为/tmp/install_hbase.sh文件 #!/bin/bash# 安装之前确保安装目录有写入权限,若没有,自行增加 # 安装版本 zk_version"2.4.8" # 安装目录 zk…

【WxPusher】消息推送小案例

提示:以下是本篇文章正文内容,下面案例可供参考 WxPusher后台 WxPusher文档 一、注册WxPusher 进入后台获取你的token 二、使用步骤 1.编写脚本 参数如下(示例): {"appToken": "AT_AnXubGNGCe7OVN…

基于springboot的校园二手市场

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

LeetCode:2477. 到达首都的最少油耗(DFS C++、Java)

目录 2477. 到达首都的最少油耗 题目描述: 实现代码与解析: dfs 2477. 到达首都的最少油耗 题目描述: 给你一棵 n 个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从 0 到 n…

医院预约挂号平台的设计与实现

摘 要 网络的空前发展给人们的工作和生活带来了极大的便利,信息技术已成为节约运营成本、提高工作效率的首选。相比之下,国内相当多的中小医院在医院预约工作中的手工工作比较保守,数据查询和存储成本都很高,但效率很低。为了使医…

JAVAEE初阶 多线程基础(六)

wait,notify,饿汉模式 一.wait,notify方法使用1.1 例子 二.wait和sleep区别三.单例模式中的饿汉模式 一.wait,notify方法使用 引入wait和notify为了能够从应用层面上,干预到多个不同线程代码的执行顺序,不是影响系统的线程调度策略. 相当于是在应用程序代码中,让后执行的线程,主…

支付宝沙箱支付

1. 二维码 1.1 什么是二维码: ​ 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。 ​ 二维条码/二维码&…

HNU-电路与电子学-2017期末B卷(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程,故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电,故期中考试主要以“模电”为主,期末考试主要以“…

04数据平台Flume

Flume 功能 Flume主要作用,就是实时读取服务器本地磁盘数据,将数据写入到 HDFS。 Flume是 Cloudera提供的高可用,高可靠性,分布式的海量日志采集、聚合和传输的系统工具。 Flume 架构 Flume组成架构如下图所示: A…

编译原理:NFA转DFA(原理+完整代码+可视化实现)

NFA转换为DFA 【本文内容摘要】 什么是DFA通过子集构造法将NFA转换为DFA生成DFA的dot文件并且形成可视化。 如果本文对各位看官有用的话,请记得给一个免费的赞哦(收藏也不错)! 文章目录 NFA转换为DFA一、什么是DFA二、NFA转换为…

【GO】protobuf在golang中的测试用例

上篇文章介绍了如何安装protobuf环境,文章链接如下 【Go】protobuf介绍及安装-CSDN博客 本节介绍protobuf在gRPC中具体如何使用,并编写测试用例 一、Protobuf是如何工作的 .proto文件是protobuf一个重要的文件,它定义了需要序列化数据的结…

企业微信配置可信域名

首先去申请一个域名,然后将域名绑定到有公网ip的云服务器上,绑定到具体的网站;然后再企业微信,管理后台,点击具体的应用,进【网页授权及JS-SDK】;点击底部的【申请校验域名】点击下载文件&#…

postgresql pg_hba.conf 配置详解

配置文件之pg_hba.conf介绍 该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段的IP连接到本服务器,以及指定连接时使用的身份验证模…

第73讲:深入理解MySQL数据库InnoDB存储引擎:内存结构、磁盘结构与后台线程全面解析

文章目录 1.InnoDB存储引擎的架构2.InnoDB存储引擎的内存结构2.1.Buffer Pool缓冲池2.2.Change Buffer更改缓冲区2.3.自适应Hash索引2.4.Log Buffer日志缓冲区 3.InnoDB存储引擎的磁盘结构3.1.System Tablespace系统表空间3.2.File-Per-Table Tablespaces每个表都有单独的表空间…

红警For Mac(RAM芯片可玩)

1、文件损坏解决版本! 执行以下命令,(注意:命令2应用路径根据实际情况修改) sudo spctl --master-disable sudo xattr -r -d com.apple.quarantine /Applications/红警2尤里复仇M芯片.app2、新系统14,第一…

孩子都能学会的FPGA:第二十一课——用线性反馈移位寄存器实现伪随机序列

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

腾讯云轻量应用服务器怎么使用宝塔面板?

腾讯云轻量应用服务器宝塔面板怎么用?轻量应用服务器如何安装宝塔面板?在镜像中选择宝塔Linux面板腾讯云专享版,在轻量服务器防火墙中开启8888端口号,然后远程连接到轻量服务器执行宝塔面板账号密码查询命令,最后登录和…

采集伪原创洗稿,实现文章创作的方法

各位写手小伙伴们,今天要和大家分享一些关于伪原创的方法和经验,希望这些建议能够在你们的写作之旅中派上用场。 首先我们需要明确一下,伪原创并不是鼓励抄袭,而是一种在保留原文核心思想的同时,通过巧妙的方式改写&a…

Qt应用开发(Quick篇)——布局类与布局模块

一、前言 实际 应用中,布局是常用的功能,布局最直观的就是提供空间使用率,改善空间的流动和模块之间的重叠,让界面更加的美观。 二、布局类Layout 2.1 介绍 将Layout类型的对象附加到布局的子元素上,提供有关该项的特…