keil5软件

1.器件支持包

        Keil 认识某系列芯片的数据包”——里面包含启动文件、Flash 算法、SFR 头文件、调试描述文件等。器件支持包 = 芯片身份证;缺了它,Keil 就不认识你的 MCU。

也可以在线下载。

基础知识

1.MCU是什么?

MCU 是 Microcontroller Unit 的缩写,中文叫 “微控制器”“单片机”

把 CPU、内存、闪存、定时器、ADC、串口、GPIO 等外设全部集成到一颗芯片上的“小电脑”

2.寄存器

就是“离硬件最近、一个位对应一根信号线”的快闪存储单元;你写 0/1 进去,等于直接掰动芯片内部的电子开关,立即改变引脚电平、启动 ADC、让 DMA 搬数据——所有底层外设行为,最终都落实在这些“小抽屉”里。

3.引脚

引脚的编号规则

特殊引脚的功能和作用:

普通引脚的命名规则:

4.VDDVSSNRSTVBATBOOT0 每个引脚

  1. VDD:芯片的主电源引脚,为内部电路提供工作电压。

  2. VSS:地引脚,作为芯片的参考零电位。

  3. NRST:低电平复位引脚,用于将芯片恢复到初始状态。

  4. VBAT:备用电源引脚,为实时时钟(RTC)和备份寄存器供电。

  5. BOOT0:启动模式选择引脚,决定芯片从主闪存、系统存储器还是SRAM启动。

GPIO

GPIO:(General Purpose Input Output)

通用输入输出口GPIO可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

GPIO的结构

  上面一半是输入驱动器,下面一半是输出驱动器。

I/O引脚是指:输入和输出的引脚。

保护二极管是:Vdd为3.3v,Vss接地。如果超过3.3V,电流会流出,从而不会破坏电路。

上拉电阻和一个下拉电阻:上拉电阻至VDD,下拉电阻至VSS。如果下面导通,上面断开,就是下拉输入模式。为了给输入提供一个默认的输入电平的。

实际情况是,如果输入啥都不接,输入就会处于”种浮空的状态,引脚的输入电平极易受外界干扰而改变。

如果上面导通、下面断开,就是上拉输入模式,

施密特触发器:输入电压进行整形的。执行逻辑是,如果输入电压大于某一阈值,输出就会瞬间升为高电平。如果输入电压小于某一阀值,输出就会瞬间降为低电平。

如果有了施密特触发器,那比如定一个这样的阈值上限和下限!

在推挽输出模式下,P-MOS和N-MOS均有效,数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,就是输出高电平。数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,就是输出低电平。

在开漏输出模式下,这个P-MOS是无效的,只有N-MOS在工作。数据寄存器为1时,下管断开,这时输出相当于断开,也就是高阻模式。数据寄存器为0时,下管导通,输出直接接到VSS,也就是输出低电平。这种模式下,只有低电平有驱动能力,高电平是没有驱动能力的。

关闭模式下,这个是当引脚配置为输入模式的时候,这两个MOS管都无效,也就是输出关闭,端口的电平由外部信号来控制。

GPIO的8种工作模式

GPIO相当于手。是通用输入输出意思。

芯片上“听你指挥、可输入可输出”的最小硬件单元。

推挽:交替断开

开漏:只有下面的开断

IO最大输出速率:

上升时间、下降时间和保持时间的概念:

上升时间、下降时间影响了IO最大输出速率。

GPI0 模块编程接口

GPIO 4种输入模式

        4种输入模式指的是GPIO端口配置为输入功能时可以设置的4种不同工作方式。它们的主要区别在于是否使用上拉/下拉电阻,以及是否使用施密特触发器

 1. 浮空输入(Floating Input)

引脚既不接上拉电阻,也不接下拉电阻,电平状态完全由外部电路决定。

2.上拉输入(Input with Pull-up)

内部连接一个上拉电阻到VCC,默认电平为高。

3.下拉输入(Input with Pull-down)

内部连接一个下拉电阻到GND,默认电平为低。

4.模拟输入(Analog Input)

关闭数字输入功能,用于连接ADC(模数转换器)。

LED和蜂鸣器介绍

LED:发光二极管,正向通电点亮,反向通电不亮

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。

无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声调整提供振荡脉冲的频率,可发出不同频率的声音。

串口通信

两个芯片相互之间传递信息,从to向rx传。

串口格式图:起始位为0,停止位1.

例子:

奇偶校验位:

通过数串口的奇偶判断数据是否传递正确。

OLED简介

OLED (Organic Light Emitting Diode)有机发光二极管OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快宽视角、轻薄柔韧等特点。

0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64。

调试方式

串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。
显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。
Keil调试模式:借助Kei软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。

硬件电路

SCL,SDA是I2C的通信引脚,需要接在单片机12C通信的引脚上。

OLED驱动函数

EXTI简介

EXTl(Extern Interrupt)外部中断

EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序

支持的触发方式:上升沿/下降沿/双边沿/软件触发

支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断通道数:16个GPIO Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
触发响应方式:中断响应/事件响应

中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行。
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

中断执行流程

当中断来临时,由硬件自动调用这个函数。

NVIC基本结构

NMIC的名字叫做嵌套中断向量控制器。在STM32中,它是用来统一分配中断优先级和管理中断的。

NVIC优先级分组

        NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。

EXTl结构

AFIO复用I0口

AFIO主要用于引脚复用功能的选择和重定义
在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择。

数据选择器:它的符号是一个梯形,有多个输入,一个输出。在侧面有选择控制端,根据控制端的数据,从输入选择一个接到输出。

复用功能

每个引脚除了可以作为普通的 GPIO(输入/输出)使用外,还可以被配置为外设功能引脚。

 举例:

比如 STM32 的 PA9 引脚:

  • 默认是 GPIOA 的第9脚

  • 也可以配置为 USART1 的 TX(复用功能)

重定义

有些外设功能默认绑定在某些引脚上,但如果你想把这些功能移到别的引脚上,就需要使用重定义功能

举例:

比如 USART1 默认引脚是:

  • TX = PA9

  • RX = PA10

但如果你不想用 PA9/PA10,而是想用 PB6/PB7,就可以通过 AFIO 的重定义功能把 USART1 映射到 PB6/PB7。

什么时候使用外部中断?

想要获取的信号是外部驱动的很快的突发信号。

旋转编码器介绍

旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向类型:机械触点式/霍尔传感器式/光栅式

USART模块简介

就是 MCU 内部集成的“串口发动机”,写一个字节进 TXDR,它自动按你设的波特率把帧发出去;收到完整帧后,你把 RXDR 读出来就行——所有比特级脏活,硬件全包

1.移位寄存器:移位寄存器是一种时序逻辑电路,由多个触发器(如D触发器)级联组成,能在时钟信号控制下,将数据一位一位地向左或向右移动

用途:数据延迟,数据缓存.串并转换(SIPO)或 并串转换(PISO)

2.串并转换:串并转换是指将串行数据(一位一位输入)转换为并行数据(多位同时输出) 的过程。

输入:1位数据流 1 0 1 1 0 0 1 0(串行)

输出:8位并行数据 10110010(一次输出8位)

USART模块有哪些引脚?

TIM定时器简介

TIM(Timer)定时器

定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。

不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

定时器类型

基本定时器框图

三个重要的寄存器:预分频器、计数器和自动重装寄存器。

预分频器对时钟进行预分频,计数器自增计数,当计数值计到自动重装值时,计数值清零同时产生更新中断和更新事件

ADC简介

ADC(Analog-DigitalConverter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。

STM32主要是数字电路,数字电路只有高低电平,没有几V电压的概念,所以如果想读取电压值,就需要借助ADC模数转换器来实现了。
12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围
STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道。

        ADC其实就是一个电压表,把引脚的电压值测出来,放在一个变量里。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐