STM32入门之创建工程模板

1.STM32固件库的结构图如下。从图中可以看出,我们在配置STM32的固件库时需要配置用户层、CMSIS层的文件。配置库文件即正确的配置这些函数的文件。CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司提供的微控制器软件接口标准,所有使用ARM内核的芯片都必须遵守此标准。

每个固件库文件的内容都在图中有说明,大概了解即可。STM32的固件库文件可以在官网上下载。

2.配置一个工程模板:

(1)选择自己需要的固件库文件,本文中使用的STM32F10x系列:

 主要是需要这两个文件夹中的文件:

 (2)新建文件夹Template,并创建如下几个文件夹。

Libraries中存放的是CMSIS与片上外设文件。

 Output是输出文件。Project是项目文件。这两个文件暂时不需要配置。

User中是和用户相关的文件,主要是main文件、中断文件和是stm32f10x_conf.h文件。

(2)将Libraries中的部分文件拷贝到自己创建的CMSIS中:

(3)将下面文件夹中的文件拷贝到自己创建的User目录下:

至此一个工程模板便创建完成,此后新建工程时,便可以利用这个工程模板构建固件库。

3.利用工程模板创建一个点亮LED的新工程:

  (1) 复制一份工程模板作为作为新工程的初始文件。

(2)打开keil,新建工程文件,工程文件放在project文件夹中:

(3).将工程模板中的文件添加进来

 

 

 

 

 (4).添加头文件的路径:

 (5).配置编译器的相关定义:

 

 

 

 4.代码:

#include "stm32f10x.h"int main(void)
{//¶¨Òå¶Ë¿ÚµÄ½á¹¹Ìå:GPIO_InitTypeDef GPIO_InitStruct;//1.ʹÄÜʱÖÓ£ºRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOA,ENABLE);//2.ÅäÖö˿ڽṹÌåµÄÏà¹ØÐÅÏ¢£ºGPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStruct);//3.ʹÄÜÒý½Åwhile(1){GPIO_ResetBits(GPIOD ,GPIO_Pin_2);}
}

 5.运行结果:

 6.总结:

        配置库文件就是芯片公司和ARM提供的一些库文件正确的添加到字节的工程中。通过创建一个工程模板,此后,所有的工程都可以利用工程模板快速的创建。

        点亮LED灯的步骤:使能时钟、配置端口信息、引脚输出电平。

 

 

 

 

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

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

相关文章

macos M1安装多个版本jdk

1、安装jdk 8 到 oracle 官网 https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 找到 macOS x64 DMG Installer 后面的下载链接下载安装包 java的jdk 都安装在以下目录 ls /Library/Java/JavaVirtualMachines/jdk-1.8.jdk jdk-1…

Data Structure, Algorithm,and Applications in C++

在学习这本书进阶内容之前,我们可以跟着它的第一章部分再巩固和复习。本书由Sartaj Sahni撰写,由王立柱和刘志红翻译。全书通俗易懂,内容丰富,是巩固C内容的不二选择。希望本文对各位有所帮助。 目录 1.函数与参数 1.1.传值参数…

C++初探

目录 经典开头 — C的历史 作用域运算符 using的用法 命名空间 - namespace 命名空间的基本使用 特殊的命名空间 - 无名命名空间 全部展开和部分展开 std — C所有的标准库都在std命名空间内 省缺值 - 默认参数 占位参数 内联函数 - inline 函数重载 函数重载的用…

【Unity2D】相机移动以及设置相机边界

添加相机 添加相机时,首先需要在unity中添加 Cinemachine 包 第一次使用这个包时,需要在Package Manager中搜索并安装 安装Camera Mechine包后,添加2D Camera 设置跟随对象为Ruby (从Hierarchy中将Ruby拖动到Follow中&#xff0…

kafka 2.1.1 java的消费者客户端如何获取数据源码

KafkaConsumer 一、kakfa消费者暴露给业务系统获取数据的方法1 首先从缓冲区队列取数,没有数据则请求服务端来获取数据1.1循环从队列中取数,给到空或者已被提取的nextInLineRecords(1)当nextInLineRecords的数据被提取时,就把nextInLineRecor…

c函数学习

函数的概念 函数是c语言的功能单位,实现一个功能可以封装一个函数来实现。定义函数的时候一切以功能为目的,根据功能去定义函数的参数和返回值 函数的分类 从定义角度分类:库函数(c库实现的),自定义函数&…

一、大数据技术之Flume(简介)

第1章 Flume概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 1.2 Flume基础架构 Flume组成架构如下图所示。 1.2.1 Agent Agent是一个JVM进程&…

微信小程序23__flex布局 相关的3种居中: 水平居中_垂直居中_水平垂直居中

3 种居中方式, 在页面布局中经常用到, 现作一记录。 第一种 水平居中 类似这样写法 display: flex; flex-direction: column; //垂直布局 align-items: center; // 水平居中 justify-content: space-a…

NLP实战8:图解 Transformer笔记

目录 1.Transformer宏观结构 2.Transformer结构细节 2.1输入 2.2编码部分 2.3解码部分 2.4多头注意力机制 2.5线性层和softmax 2.6 损失函数 3.参考代码 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有&#…

vue 路由守卫

全局路由守卫 beforeEach 路由跳转前触发to 代表 到那个页面去from 代表从哪个页面来next 表示放行 beforeResolve 表示 组件解析后触发的钩子 afterEach 表示路由跳转完成之后i触发的钩子 全局路由钩子执行顺序 beforeEach > beforeResolve>afterEach 局部路由…

在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

【Hadoop 01】简介

目录 1 Hadoop 简介 2 下载并配置Hadoop 2.1 修改/etc/profile 2.2 修改hadoop-env.sh 2.3 修改core-site.xml 2.4 修改hdfs-site.xml 2.5 修改mapred-site.xml 2.6 修改yarn-site.xml 2.7 修改workers 2.8 修改start-dfs.sh、stop-dfs.sh 2.9 修改start-yarn.sh、s…

Elemui表单合并

原代码形式 <template><el-table:data"tableData"borderstyle"width: 100%"><el-table-columnprop"date"label"日期"width"180"></el-table-column><el-table-columnprop"name"label…

TC3XX - MCAL知识点(十):ICU EB-tresos配置说明与代码浅析

目录 1、概述 2、EB-tresos配置 2.1、实验目标 2.2、MCU配置 2.2.1、McuGtmTimAllocationConf 2.2.2、GtmClusterConf 2.2.3、McuClockSettingConfig 2.3、ICU配置 2.3.1、IcuOptionalApis

leetcode 399. 除法求值

给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题&#xff0c;其中 queries[j]…

Java: 转换流

转换流 1.定义 是字符流和字节流之间的桥梁。 分为&#xff1a; 字符转换输入流&#xff08;InputStreamReader&#xff09;字符转换输出流&#xff08;OutputStreamWrite&#xff09; 2.作用 1.作用1:指定字符集读写 在jdk11时&#xff0c;这种方式被淘汰了。 案例1&…

.NET各版本支持的操作系统

借助虚拟机和测试机&#xff0c;检测各版本操作系统对.NET的支持情况。 安装操作系统后&#xff0c;实测安装相应运行时并能够运行星尘代理为通过。 测试平台&#xff1a;VMware Workstation 镜像来源&#xff1a;MSDN I Tell You 参考&#xff1a; .NET Framework 版本和…

WebGL 概念和基础入门

WebGL 概念和基础入门 WebGL 是什么 对于 WebGL 百度百科给出的解释是 WebGL 是一种 3D 绘图协议&#xff0c;而对此维基百科给出的解释却是一种 JavaScript API。由于 WebGL 技术旨在帮助我们在不使用插件的情况下在任何兼容的网页浏览器中开发交互式 2D 和 3D 网页效果&…

使用redis RedisAtomicLong 生成订单号

背景 产品需求要生成有序的订单 key 年月日时分秒 6位序号 由00001-99999组成 且每天都是从00001开始 公司系统有部署多台服务&#xff0c;这需要一个有序的序列不能重复而且得保证获取时的原子性这里 我们考虑使用了redis Incr 这个命令 Redis Incr 命令能将 key 中储存的数…

react 实现小球加入购物车动画

代码 import React, { useRef } from react;const ProductLayout () > {const box useRef(null);const createBall (left, top) > {const ball document.createElement(div);ball.style.position absolute;ball.style.left left - 10 px;ball.style.top top - 1…