STM32开发入门基础篇知识要点

目录

一、关于STM32芯片

1、STM32F103RCT6 芯片有 4 组 I/O 口,共有 16+16+16+3 个 I/O 口,其中 D引脚只有两个。

2、大部分引脚除了当 GPIO 口,还可以复用为外设功能引脚,如串口;

所有 I/O 口都可以作为中断输入

端口复用功能:就是除了作为通用 I/O 口,还可以作为外设的引脚(最大限度利用端口)

端口重映射功能:可以把某些功能引脚映射到其他引脚,使其他引脚也具备该功能(方便布线)

3、输入模式4种: 输入浮空、输入上拉、输入下拉、模拟输入

上拉下拉输入很好理解,浮空输入的电平是不确定,完全由外部输入决定,一般按键就是浮空输入,模拟输入则用于ADC采集。

输出模式4种: 开漏输出、开漏复用输出、推挽输出、推挽复用输出

**最大翻转速度3种:**2 MHz、10 MHz、50 MHz

4、推挽输出:可以输出强高低电平,连接数字器件

开漏输出:只能输出强低电平,高电平得靠外部电阻拉高,适合做电流型的驱动

5、每个GPIO端口额寄存器包括有:图

6、上电复位后,GPIO 引脚默认为浮空输入模式 ,寄存器的值为: CNFx【1:0】= 01b,MODEx【1:0】= 00b

特殊的JTAG引脚除外 ,它们会被置于上拉 或者下拉模式

7、输入数据寄存器 GPIOx_IDR 会在每个APB2时钟周期捕捉 I/O 引脚上的数据。

8、STM32芯片命名方法:图

9、mcu选型

了解了 STM32 的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内

核的 MCU,普通应用,不需要接大屏幕的一般选择 Cortex-M3 内核的 F1 系列,如果要追

求高性能,需要大量的数据运算,且需要外接 RGB 大屏幕的则选择 Cortex-M4 内核的

F429 系列。

明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也

贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选

择 FLASH 大小,相同引脚数的 MCU 会有不同的 FLASH 大小可供选择,这个也是根据实

际需要选择,程序大的就选择大点的 FLASH,要是产品一量产,这些省下来的都是钱啊。

有些月出货量以 KK(百万数量级)为单位的产品,不仅是 MCU,连电阻电容能少用就少

用,更甚者连 PCB 的过孔的多少都有讲究。项目中的元器件的选型的水深的很,很多学问。

10、画原理图之前要先把引脚分类好

11、关于参考手册(Reference manual)和数据手册(Data Sheet)

数据手册主要用于芯片选型和设计原理图时参考,参考手册主要用于在编程的时候查阅。官方的这两个文档可以从官方网址里面下载

12、引脚的定义

在数据手册中,有关引脚定义的部分在 Pinouts and pin description 这个小节中,具体定

义见表格 5-6。

①引脚序号: 阿拉伯数字表示 LQFP 封装,英文字母开头的表示 BGA 封装。

引脚序号这里列出了有 6 种封装型号,具体使用哪一种要根据实际情况来选择。

**②引脚名称:**指复位状态下的引脚名称

③引脚类型: S 电源引脚

I 输入引脚

I/O 输入/输出引脚

④I/O结构: FT 兼容5V

TTa 只支持3V3,且直接到ADC

B BOOT引脚

RST 复位引脚,内部带弱上拉

⑤主功能:main function

⑥复用功能:Default

⑦重映射功能:Remap

13、PCB打样

厂家推荐:深圳嘉立创JLC,大概10*10CM 以内的板子只要50块三天,也能打样贴片一条龙。

二、GPIO工作原理

1、GPIO框图

原理:见野火8.2.1节

FT:可容忍5V电压,意思是IO口输出虽然是3.3V电压,但是输入时也支持5V电压。具体哪些IO口支持FT可以在数据手册的IO口特性中查看(大部分都支持)。

1、输入模式

输入浮空模式

浮空:只有半区起作用。具体:IO口输入➡️上拉/下拉配置➡️施密特触发器开启➡️进入输入数据寄存器➡️CPU可通过读取数据局存起获取引脚状态

输入上拉模式和输入下拉模式区别只在上拉/下拉部分(接VDD还是接地)

模拟输入

因为是模拟信号,所以走的是模拟的线路

2、输出模式

开漏输出模式

BSRR决定输出的值➡️输出寄存器➡️输出控制电路

ODR寄存器对应位写0,则N MOS管导通,电平被拉低,所以输出的值是个强低电平

ODR寄存器对应位写1,则N MOS管不导通,而开漏模式下P MOS管被设计为始终不导通,所以电路输出呈高阻态,IO口输出的电平值由上半区决定(输出电平会受上拉/下拉影响,只有设置上拉才能输出高电平)

推挽输出模式

与开漏模式相比,它可以输出强低电平,也可以输出强高电平

ODR寄存器对应位写0时,N MOS管导通,IO口输出强低电平

ODR寄存器对应位写1时,N MOS管关闭,P MOS管可被激活导通,电路输出强高电平,所以最终IO口输出为强高电平

复用输出模式

复用功能,就是指STM32其他片上外设对GPIO引脚进行控制。

复用功能输出就是由串口外设控制该引脚发送数据,复用功能输入就是片上外设通过GPIO引脚来接收数据。

复用开漏输出模式和复用推挽输出模式变化不大,只是由复用外设来控制的。

二、寄存器

1、F1系列的每组 I/O 口含有下面7个寄存器:

GPIOx_CRL:端口配置低寄存器

GPIOx_CRH:端口配置高寄存器

GPIOx_IDR:端口输入寄存器

GPIOx_ODR:端口输出寄存器

GPIOx_BSRR:端口位设置/清除寄存器,设置ODR寄存器的值

GPIOx_BRR:端口位清除寄存器,F4系列之后再无该寄存器,且不利于代码兼容和移植

GPIOx_LCKR:端口配置锁存寄存器,用得不多

而F4/F7/H7系列的每组 I/O 口则含有8个寄存器:

GPIOx_MODER:设置输出模式

GPIOx_OTYPER:设置输出类型

GPIOx_OSPEEDER:设置输出速度

GPIOx_PUPDR:设置上下拉电阻

GPIOx_IDR

GPIOx_ODR

GPIOx_BSRR

GPIOx_LCKR

另外还有两个复用功能的寄存器,放后面讲

2、端口配置寄存器:配置每个GPIO的工作模式和速度

CRH控制端口的高八位(PA0-PA7),CRL控制低八位(PA8-PA15)

每4位(4bit)分成一组,控制一个 IO 端口

其中关于上拉/下拉输入模式并未确认是上拉还是下拉的问题,需要查看工作模式配置补充表

因为上拉电阻和下拉电阻是通过ODR寄存器来配置的,上拉:置1,下拉:置0

2、IDR寄存器和ODR寄存器

作用:判断或设置引脚电平,IDR寄存器为只读 (判断引脚输入的电平),ODR寄存器为可读可写(配置引脚输出的电平),两个寄存器都是16位(对应16个 I/O 端口)

配置方式:读取或配置寄存器的单独某一位为1,比如读到第0位的IDR0 = 0,则对应的第0个引脚输入为低电平。就比如GPIOB-IDR寄存器的第0位为1,则PB0输入引脚的值就是1。若想要配置为上拉输入或下拉输入,需要配置的是相应的ODR寄存器的值。

3、端口位设置/清楚寄存器BSRR

首先这是个32位的寄存器,分为两部分,作用是给ODRx 位置1或清0,前16位用于置1,后16位用于清0,注意同时设置了置1和清0时,置1的优先级更高。

ODR寄存器与BSRR寄存器的区别

4、接下来介绍F4/F7/H7系列的寄存器

端口模式寄存器MODER

这是个32位寄存器,每2位控制一个引脚(共16个引脚),每个引脚可以配置4种I/O模式

输出类型寄存器OTYPER

输出速度寄存器OSPEEDER

上拉/下拉寄存器PUPDR

总结表格

未完待续。。。

相关推荐
济6172 小时前
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验
linux·stm32·嵌入式linux驱动开发
安庆平.Я2 小时前
STM32——FreeRTOS - 移植
stm32·单片机·嵌入式硬件
HIZYUAN3 小时前
AG32 MCU可以替代STM32+CPLD吗(一)
stm32·单片机·嵌入式硬件
Lester_11014 小时前
STM32 定时器驱动电机时,定时器编码器输入通道引脚模式为什么设置为输出开漏,不应该是输入模式吗
stm32·单片机·嵌入式硬件
逐步前行4 小时前
STM32_GPIO_HAL库操作
stm32·单片机·嵌入式硬件
深圳元器猫4 小时前
无源声表谐振器 - 智能物联网声表滤波器解决方案
单片机·嵌入式硬件
脱离语言4 小时前
51单片机开发——运行Demo
单片机·51单片机
卓律涤4 小时前
【工作篇】 Dell机架式服务器,采用RAID 5,怎么部署win系统
运维·服务器·单片机·嵌入式硬件·深度学习·程序人生·安全
逐步前行4 小时前
STM32_GPIO_寄存器操作
stm32·单片机·嵌入式硬件