本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。
目录
简介
STM32是Cortex-M3 系列的,而Cortex-M3 处理器采用ARMv7-M 架构。
芯片架构
上图是stm32的系统结构。
使用哈弗体系结构,取指和取数据分离,
ICODE指令总线连接到flash闪存指令存储区,这个存储区的地址在0x00000000-0x1FFFFFFF之间,负责取指操作。
DCODE数据总线负责在0x00000000-0x1FFFFFFF之间的数据访问操作。这个数据存储区可以是SPRAM也可以是闪存和外设。Stm32f10系列的静态SPRAM为64K,起始地址为0x20000000.
系统总线:负责在0x20000000-0xDFFFFFFF和0xE0100000-0xFFFFFFFF之间所有的数据传送。
AHB 总线这是贯穿所有外设的一条总线, 可以在图中发现, AHB经过桥接, 由APB1、 APB2控制着几乎所有外设, 2>1, APB2属于高速设备, 而APB1则属于低速设备。
系统时钟
- HSE:外部晶体/陶瓷谐振器(一般选用8M 手册中提到范围为4~16Mz)用户外部时钟 (最高可达25MHz从SOC_IN引脚输入,并保证OSC_OUT悬空)。
- HSI:此时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为
PLL输入。
- LSE:是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提
供一个低功耗且精确的时钟源
- LSI RC:担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看
门狗和自动唤醒单元提供时钟。 LSI时钟频率大约40kHz(在 30kHz和 60kHz之间)。
除此之外,值得一提的是SYSCLK/HSI/HSE/2分频的PLL时钟,可由时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位控制外部 MCO引脚输出。作为时钟同步信号。
GPIO
GeneralPurposeInputOutput(通用输入/输出)
构体单元名 | 中文释义 | 实际结构与特点 |
AIN | 模拟输入 | 实际控制中,关闭了上端的施密特触发器(自己的翻译,图中TTL肖特基触发器恕我知识浅薄看不懂),以及输出驱动器即模拟信号仅能通过管脚流入片内模拟输入端。(有可能有下拉电阻,起到阻抗匹配作用)。 |
IN_FLOATING | 浮空输入 | 理解起来最简单,即什么都不接,手触摸的时候人体感应引脚,可能高可能低,这个就不好说啦, STM32结构不明,更何况人体是个大电容啊。一般不用。 |
IPD | 下拉输入 | D即DOWN,下拉,笔者认为起到衰减及稳定信号作用,如有雷同理解,不胜荣幸。 |
IPU | 上拉输入 | U即UP,上拉,此时在输入端,上拉电阻开关使能, 芯片或接口的内部或外部有上拉,保证输入不接信号时为1。 |
Out_OD | 开漏输出 | 相当于三极管集电极, 要得到输出高电平需上拉电阻, 若输出低电平则吸电流能力强,可参看达林顿管UNL2003,思考该芯片可否输出电平1 |
out_PP | 推挽输出 | 笔者钻研开关电源,(数字电路很没劲啦,一下一下就搞出来了的, 开关电源环节多, 健脑O(∩_∩)O~~) 习惯称为图腾柱输出, otemPole,或半桥,两个三极管或FET 受互补信号控制, 使得在一个导通时另一个总是截止。 一般用来用来匹配电压, 或者提高IO口的驱动能力。 在STM32中当然是为了提高其驱动能力而设定的。 |
AF_OD | 开漏复用 | AF是复用的标号,是对于STM32的GPIO 管脚的第二功能而言的, 具体用到再说。 比如使用串口就是要设为复用哦。 具体配置可以参看参考手册V10: 8.1.11 外设的GPIO 配置 |
Stm32的GPIO的8种模式:
(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出