STM32-江科大

news2024/11/15 23:48:11

新建工程

引入启动文件

Start中是启动文件,是STM32中最基本的文件,不需要修改,添加即可。
启动文件包含很多类型,要根据芯片型号来进行选择:
请添加图片描述

如果是选择超值系列,那就使用带 VL 的启动文件,若是普通版就选择不带VL的
然后再根据Flash的大小,选择LD(lower density),MD,HD或者XL

stm32f10x.h 是STM32的外设寄存器描述文件,是用来描述STM32有哪些寄存器和它对应地址的
system文件 是用来配置时钟的

由于STM32是由内核和内核外围的设备组成的,并且内核的寄存器描述(CoreSupport)和外围的寄存器描述文件(DeviceSupport)不是在一起的,因此还需添加“内核寄存器”的描述文件。

两个CM3 是内核的寄存器描述

引入库函数文件

当project中没有引入Library时,即无库函数,使用编程是通过直接操作寄存器来进行的。因此需要引入STM32的库函数。

1.引入头文件和源文件

STM32F10x_StdPeriph_Driver 为STM32标准外设驱动文件夹,其中
inc 是库函数的头文件
src 是库函数的源文件,在其中:misc 是内核的库函数,其他的是内核外的外设库函数

将这两个文件夹下的头文件和源文件全部复制到,项目文件夹下的Library中。
keil5 中将文件加入工程。

2.引入配置文件

STM32F10x_StdPeriph_Template 是一个示例项目文件夹,其中
stm32f10x_conf.h (configuration) 文件是用来配置库函数头文件的包含关系的,还有用于参数检查的函数定义,是所有库函数都需要的。
两个以 it 结尾的文件 是用来存放中断函数的。

将这3个文件复制到项目的User中。
keil5 中将文件加入工程。

4.Keil软件配置
打开主函数所引入的第一个头文件 stm32f10x.h, 在偏向最下方的部分找到

#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif

这是一个条件编译,表示:如果定义了 USE_STDPERIPH_DRIVER 语句(使用标准外设驱动),其中的引入头函数语句才有效。

因此,复制语句USE_STDPERIPH_DRIVER到 keil5 软件的魔法棒 → C/C++ → Define:。

再把下方的头文件路径中加入 Library和user。

工程新建完成

经过以上两步操作,引入了启动文件和库函数文件,分别放在 Start 和 Library 之中,配置完成后,这两个文件夹中的文件都是不需要修改的(人家给的权限也是只读)。
需要修改的只有 User 文件夹下的代码。

GPIOC 是指单片机(如 STM32、Arduino 等)中的一个 GPIO 端口,其中 GPIO 是 General Purpose Input Output(通用输入输出)的缩写,而 C 表示这个端口属于 C 组。
在单片机中,GPIO 可以被用来控制数字信号的输入和输出。例如,可以将 GPIOC 配置为输出模式,在程序中控制它的高低电平,从而控制外部设备的状态或执行某些操作。另外,GPIOC 也可以被配置为输入模式,从而读取外部设备发送的数字信号。

GPIO

简介

  • GPIO (General Purpose Input Output) 通用输入输出口
  • 可配置8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V(具体有哪些可以参考 STM32 的引脚定义,带FT的就是可容忍5V的)
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用以读取按键输入、外接模块电平信号输入(压敏)、ADC电压采集、模拟通信协议接收数据(MQTT)等

基本结构

  • 在STM32种,所有的GPIO都是挂载到 APB2 外设总线上的,其中GPIO外设的名称是按照GPIOA,GPIOB,GPIOC这样来命名的,每个GPIO外设总共有16个引脚,编号是0到15。
  • 寄存器:STM32 是32位的单片机,故寄存器都是32位的,寄存器的每一位对应一个引脚。但端口只有16位,因此寄存器只有低16位有对应端口,高16位未使用到。
  • 驱动器:用来增加信号的驱动能力,寄存器只负责存储数据,若要进行点灯之类的操作,需要驱动器来增大驱动能力。
    请添加图片描述

GPIO位结构

数据输入(从右向左看):

  • 保护二极管:保护内部电路
    当输入电压高于3.3V时,上方保护二极管导通,输入电压产生的电流会流入 V D D V_{DD} VDD,而不会流入内部电路,可避免过高的电压对内部电路产生伤害。
    当输入电压比0V还要低(相比于 V S S V_{SS} VSS,故可以有负电压),下方二极管就会导通,电流会从 V S S V_{SS} VSS直接流出,也不会从内部汲取电流,保护了内部电路。
  • 上拉电阻和下拉电阻(配置参数):给输入提供一个默认的输入电平(输入引脚不接高低电平)
    上导通,下断开——上拉输入模式,此时引脚默认高电平(1)
    下导通,上断开——下拉输入模式,此时引脚默认低电平(0)
    两个都断开——浮空输入模式,此时引脚的输入电平极易受外界干扰而改变(?)
  • 施密特触发器:对输入电压进行整形
    给一个上限阈值和下限阈值,当输入电压高于上限阈值时,输出就是高电平。当然输入电压低于下限阈值时,输出就是低电平。这样能够使得有噪声的模拟信号整形成稳定的信号,可以有效避免因信号波动造成的输出抖动现象。

由此,信号便进入了输入数据寄存器,再用程序读取寄存器中的数据,便可以获得端口的输入电平了。
也可以输入到片上外设,分别有模拟输入和复用功能输入。

请添加图片描述

数据输出(从左往右看):
数据输出的来源有两种:输出数据寄存器和片上外设。

  • 位设置/清除寄存器:对单独某一位进行置1或置0
    由于输出数据寄存器只能整体进行操作,故若想对某一位进行单独处理的话,就只能读出来,改变它,再写入的方式进行,而使用“位设置/清除寄存器”可以更高效地实现该目的。
  • 输出控制(配置参数):选择数据来源是寄存器还是片上外设。
  • MOS电子开关(配置参数):
    • 推挽输出模式:P-MOS和N-MOS均有效
      当寄存器的数据为1时,上管导通,下管断开,输出连接 V D D V_{DD} VDD,输出高电平。
      当寄存器的数据为0时,上管断开,下管导通,输出连接 V S S V_{SS} VSS,输出低电平。
      这种模式下,高低电平均有较强的驱动能力,故该模式也称 强推输出模式。
    • 开漏输出模式:N-MOS有效,P-MOS无效(上管断开)
      当寄存器的数据为1时,下管断开,输出相当于断开,高阻模式。Unknown
      当寄存器的数据为0时,下管导通,输出连接 V S S V_{SS} VSS,输出低电平。
      这种模式下,只有低电平均有驱动能力,故该模式可以作为通信协议的驱动方式,或用于输出5V的电平信号。
    • 关闭模式:P-MOS和N-MOS均无效(引脚配置为输入模式时)

GPIO的8种工作模式

请添加图片描述

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

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

相关文章

多元统计分析-主成分分析的原理与实现

目录 一、什么是主成分分析? 二、主成分分析的原理 三、主成分分析的应用 四、使用sklearn实现主成分分析 五、总结 一、什么是主成分分析? 主成分分析(Principal Component Analysis,PCA)是一种常用的多元统计分…

Docker部署FAST OS DOCKER容器管理工具

Docker部署FAST OS DOCKER容器管理工具 一、FAST OS DOCKER介绍1. FAST OS DOCKER简介2. FAST OS DOCKER特点 二、本次实践介绍1. 本次实践简介2. 本次实践环境 三、本地环境检查1.检查Docker服务状态2. 检查Docker版本 四、下载FAST OS DOCKER镜像五、部署FAST OS DOCKER1. 创…

理解控制变量、内生变量、外生变量、工具变量

文章目录 前言一、控制变量二、内生变量、外生变量三、工具变量(IV) 前言 1.解释变量(或自变量):解释变量是指作为研究对象,用于解释某个现象或行为模式的变量。其中有些解释变量是直接影响被解释变量的&a…

自学黑客(网络安全),一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而…

重塑未来:AI对教育行业的深远影响与挑战

自从AI人工智能的发展进入“iPhone时刻”以来,我们已身处一个日新月异的时代。在众多领域,AI已经大放异彩,而教育作为培养下一代的关键领域,自然也受到了这场科技革命的影响。 AI对教育行业重大影响 最近可汗学院(Kh…

图论网络模型及求最小路径和造价实战

学习知识要实时简单回顾,我把学习的图论简单梳理一下,方便入门与复习。 图论网络 图论网络简介 图论起源于 18 世纪。第一篇图论论文是瑞士数学家欧拉于 1736 年发表的“哥尼斯堡的七座桥”。1847 年,克希霍夫为了给出电网络方程而引进了“…

《Netty》从零开始学netty源码(五十五)之PooledByteBufAllocator

PooledByteBufAllocator 通过前面的学习我们大体了解了PooledByteBufAllocator管辖下的数据结构,整体情况如下: PooledByteBufAllocator主要管理了三类内存,堆内存heapArenas、直接内存directArenas、线程缓存PoolThreadCache,前…

Java笔记_18(IO流)

Java笔记_18 一、IO流1.1、IO流的概述1.2、IO流的体系1.3、字节输出流基本用法1.4、字节输入流基本用法1.5、文件拷贝1.6、IO流中不同JDK版本捕获异常的方式 二、字符集2.1、GBK、ASCII字符集2.2、Unicode字符集2.3、为什么会有乱码2.4、Java中编码和解码的代码实现2.5、字符输…

直方图均衡化与规定化原理解释以及matlab实现

直方图均衡化(HE) Histogram Equalization (HE) 设灰度水平在 r k , k ∈ [ 0 , L − 1 ] r_k,k\in[0,L-1] rk​,k∈[0,L−1] 内 一幅图像 f f f 的非归一化直方图定义为 h ( r k ) n k h(r_k)n_k h(rk​)nk​ s T ( r ) sT(r) sT(r)为…

【统计模型】心脏病患病影响因素探究

目录 心脏病患病影响因素探究 一、研究目的 二、数据来源和相关说明 三、描述性统计分析 四、数据建模 4.1 全模型 (1)模型构建 (2)模型预测 4.2 基于AIC准则的选模型A 4.3 基于BIC准则的选模型B 4.4 模型评估 五、结论…

Vector - CAPL - CANoe硬件配置函数 - 02

Hardware Configuration 硬件配置中包含CAN或者CANFD的参数配置,其中包含波特率、时间片1、时间片2、时间量子中的同步跳跃宽度、采样点数等信息;随着研发系统中各类型的平台化,测试想要跟上研发的进度,也必须进行平台化&#xff…

linux【网络编程】之网络套接字预备

linux【网络编程】之网络套接字 一、必备知识1.1 端口号1.2 端口号方面疑问及解决方案 二、TCP/UDP协议三、网络字节流四、socket编程4.1 认识接口4.2 浅析sockaddr结构 一、必备知识 在【网络基础】中我们提到了IP地址,接下来了解一下网络通信中其他方面的知识 1…

浏览器的渲染

浏览器的渲染 浏览器的渲染过程分为两大阶段,八大步骤,由两个线程完成, 下面是总的过程 第一个 渲染主线程 它包括5个步骤, 1、html解析 parse 解析我们的HTML,生成DOM树结构 2、样式计算 computed style 比如我们…

系统运维(Git篇)

Git基础 Git Git是一种分布式版本控制系统,可以帮助我们管理代码的版本和变更。通过学习Git,我们可以更好地理解版本控制的原理和应用,同时也可以掌握Git的使用和管理技巧。 Docker Docker是一种容器化平台,可以将应用程序及其依赖…

华为OD机试真题2023(JAVA)

目录 华为OD机试是什么?华为OD面试流程?华为OD机试通过率高吗?华为OD薪资待遇?华为OD晋升空间? 大家好,我是哪吒。 本专栏包含了最新最全的华为OD机试真题,有详细的分析和Java代码解答。已帮助…

web前端的同源策略是什么?

一、同源策略 1995年,同源政策由 Netscape 公司(网景公司)引入浏览器。目前,所有浏览器都实行这个政策。同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。随着互联网的发展,“同源政策”越来越严格…

深入理解java虚拟机精华总结:运行时栈帧结构、方法调用、字节码解释执行引擎

深入理解java虚拟机精华总结:运行时栈帧结构、方法调用、字节码解释执行引擎 运行时栈帧结构局部变量表操作数栈动态连接方法返回地址 方法调用解析分派静态分派动态分派 基于栈的字节码解释执行引擎 运行时栈帧结构 Java虚拟机以方法作为最基本的执行单元&#xf…

栈在表达式中的应用(中/后前缀的转换)机算,手算模拟。

一.中缀表达式转后缀表达式 初始化一个栈,用于保存 暂时还不确定的运算顺序的“运算符” 。 从 左往右 依次扫描,会遇到三种情况: 1.遇到 操作数,直接加入后缀表达。 2.遇到 界限符:     ①遇到 “(” 入栈。  …

计算机系统-虚拟存储器

例行前言: 本篇不是学习课程时的笔记,是重看这本书时的简记。对于学习本课程的同学,未涉及的内容不代表考试不涉及(mmap,动态存储器分配,linux虚拟存储器)。本章的大部分内容已经在OS中学习过了,但本章内容…

SSM架构项目实战(CRM)

开始时间:7月17日 技术架构 (一)Web开发4层开发 视图层(view):展示数据,跟用户交互。《html,css,js,jquery,bootstrap(ext|easyUI&…