一、STM32单片机
stm32单片机有着非常广阔的应用,由于老忘记,最近打算系统的记录一下学习的内容,本章介绍GPIO,我们主要从电路的角度出发,了解配置后单片机内部的电路发生了什么变化。
二、STM32的系统结构图
整个结构图从Cortex-M3的内核开始,内核一共有三根总线:
ICode指令总线是:传输指令代码,连接Flash闪存。
Dcode数据总线是:传输数据代码,连接Flash闪存。
System系统总线是:处理一些其他的任务(包括但不限于SRAM FSMC)和AHB总线。
AHB(Advanced High-performance Bus)通过桥接模式接到APB2和APB1总线,其中APB2性能和AHB差不多,都略高于APB1,所以APB2上挂载的也是重要些的外设。
最后就是DMA了,DMA主要起到给CPU做辅助的功能,一些简单反复的数据搬运的任务都由DMA来做,而不用CPU亲自动手。
三、STM32的GPIO
这个是本章的关键部分,I/O端口位的基本结构。
─ 输入浮空 、输入上拉、输入下拉
─ 模拟输入
─ 开漏输出 、 推挽式输出
─ 推挽式复用功能 、 开漏复用功能
不同的模式对应不同的电路状态,但他们的母图都是下图。
下面是应该是斯密特触发器,所有子图都是。
① 输入浮空 、输入上拉、输入下拉
这个模式下主要就是输入端的开关是否接VDD和VSS。
② 模拟输入
这个模式下直接通过IO口到模拟输入。
③开漏输出 、 推挽式输出
这是输出模式,当推挽输出的时候P-MOS和N-MOS同时工作,输出高低电平由单片机决定。
开漏输出的时候P-MOS不工作,仅N-MOS工作,无驱动能力,但是可以上拉电阻获得驱动能力。
④推挽式复用功能 、 开漏复用功能
复用功能时由片上外设决定。
四、代码
为了文章的篇幅,已经提交到了github上。
Jiang-kun02/STM32F103c8t6_learning: 包括stm32F103C8T6的标准库和HAL库的示例代码
参考
[1-2] STM32简介_哔哩哔哩_bilibili
[3-1] GPIO输出_哔哩哔哩_bilibili
keil出现大量未知语法错误(系统移植)_after top level declarator-CSDN博客
配置CLion用于STM32开发【优雅の嵌入式开发】 - 知乎
如何使用STM32CubeMX快速配置工程【简单入门】_哔哩哔哩_bilibili