一、STM32系统结构图

STM32主系统主要由四个驱动单元和四个被动单元构成。

四个驱动单元是:(图中②③④)①内核DCode总线    ②系统总线    ③通用DMA1    ④通用DMA2

四个被动单元是:(图中⑥⑦⑧⑨)①AHB到APB的桥:连接所有的APB设备    ②内部flash闪存    ③内部SRAM    ④FSMC

下面是图中几个总线的知识:

ICode总线:该总线将M3内核指令总线和闪存指令接口相连,指令的预取在该总线上面完成。

DCode总线:该总线将M3内核的DCode总线与闪存存储器的数据接口相连接,常量加载和调试访问在该总线上面完成。

系统总线:该总线连接M3内核的系统总线到总线矩阵,总线矩阵协调内核和DMA间访问。

DMA总线:该总线将DMA的AHB主控接口与总线矩阵相连,总线矩阵协调CPU的DCode和DMA到SRAM,闪存和外设的访问。

总线矩阵:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。

AHB/APB桥:这两个桥在AHB和2个APB总线间提供同步连接,APB1操作速度限于36MHz,APB2操作速度全速(72MHz)。

下面是图中其他几个端口及外设的的知识:

Cortex-M3内核:它是STM32F103的内核,也就是CPU。除掉这个部件,其他部件都是片上外设,注意是片上的,也就是那块我们肉眼所见的芯片里的外设。这个部件可以操纵队列,依靠的是强大的数字运算能力和强大的总线设计。在阵列中,数据的运算都它给来做。

Bus-Matrix:Bus-Matrix的功能是管理总线。在阵列中,方阵Bus-Matrix作为中建管理,减少了资源的浪费,增加了系统的简洁有序性,降低了信息传输的错误率。

FLASH:来记载指令和常量。(我们都知道程序下载到Flash里后是掉电不失去的。)

SRAM:处理变量和堆栈记录,且变量更改方便快速。(我们都知道SRAM是掉电丢失的,但是数据读写真的很快。)

RCC:用于管理外设方阵的作息(在STM32里,我们要使用某个片上外设,都得先开RCC。)

SDIO:Flash和SRAM的能力有限,而SD卡的容量很大,SDIO就是专门用来与SD卡沟通的接口。

参考网址:https://blog.csdn.net/qq_38958704/article/details/105091457      https://www.cnblogs.com/kensporger/p/12252612.html

二、STM32的GPIO端口知识要点

GPIOGeneral Purpose Input & Output

STM32芯片最拥有GPIOAGPIOBGPIOG7组端口,每组端口最多拥有Pin0、Pin1…Pin15共16个引脚

STM32的每个I/O端口都可以自由编程,但I/O端口寄存器必须按32位字被访问。STM32的每个I/O端口都由7个寄存器来控制。

STM32的GPIO端口可以由软件配置成8种模式

推挽输出、开漏输出、推挽式复用功能、开漏式复用功能;

模拟输入、浮空输入、下拉输入、上拉输入。

GPIO电平输出HAL库函数

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);参数1:GPIOx,端口号,如:GPIOB,GPIOF。
参数2:GPIO_Pin,引脚号,如:GPIO_PIN_9,GPIO_PIN_12。
参数3:PinState,引脚输出状态。高电平----GPIO_PIN_SET;低电平----GPIO_PIN_RESET。
返回值:void,空。
应用举例:向PB8引脚输出高电平。
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);

GPIO电平翻转HAL库函数

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx,  uint16_t GPIO_Pin);参数1:GPIOx,端口号,如:GPIOB,GPIOF。
参数2:GPIO_Pin,引脚号,如:GPIO_PIN_9,GPIO_PIN_12。
返回值:void,空。
应用举例:将PA3引脚输出电平翻转。
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_3);

GPIO初始化函数源码剖析

void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO端口时钟使能 */__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/*配置GPIO端口引脚的初始化输出电平 */HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);/*配置GPIO端口输入引脚 : PC13 */GPIO_InitStruct.Pin = GPIO_PIN_13;              //GPIO端口的引脚号是:13GPIO_InitStruct.Mode = GPIO_MODE_INPUT;         //GPIO的模式是:输入GPIO_InitStruct.Pull = GPIO_NOPULL;          //没有上拉HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);   //将参数结构设置到GPIOC端口/*配置GPIO端口输出引脚 : PB8 PB9 */GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;    //GPIO端口的引脚号是:8和9GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;    //GPIO的模式是:输出GPIO_InitStruct.Pull = GPIO_NOPULL;        //没有上拉GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;     //GPIO的输出速度是:非常低速HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);     //将参数结构设置到GPIOB端口
}

参考网址:https://www.xmf393.com/2020/02/16/2020021602/

STM32系统结构图理解及GPIO学习笔记相关推荐

  1. Xilinx AXI GPIO学习笔记以及问题点

    Xilinx AXI GPIO学习笔记以及问题点 1.问题总结 如上图,在Vivado中设置的GPIO IP只有一个,但是使用的两个Channel,此时在SDK中初始化和设置就容易出现问题. 1.1 ...

  2. 树莓派点亮led灯C语言,树莓派点亮你的LED小灯——GPIO学习笔记

    这篇博文是我Coursera学习笔记整理所得,入门操作基本都在这里了.闲话不多说,直接进入正题. 1.树莓派的GPIO## GPIO是General Purpose Input Output (通用输 ...

  3. 《电商后台系统产品逻辑解析》学习笔记

    文是我阅读<电商产品经理宝典:电商后台系统产品逻辑全解析>一书的学习笔记,为后续我司做家居电商后台系统储备相关领域的业务知识. 一.支撑线后台概览 "前端用户的一小步,后台系统的 ...

  4. 专升本英语——应试题型突破——阅读理解——阅读理解概述【学习笔记】

    全部知识点请进入:专升本英语--学习笔记[知识点全轻松学习]!!! https://blog.csdn.net/liu17234050/article/details/104576823 目录: 一: ...

  5. 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  6. 流处理系统(Flink, Kafka和Pravega)学习笔记

    本文记录一下我比较感兴趣的实时流处理方面的知识,从计算Flink,到存储Pravega,再到消息中间件Kafka,理论知识四大方面学习.如有错误请在评论区指正.实时更新~ 理论知识 有状态的流计算 无 ...

  7. 《深入理解计算机系统》学习笔记:程序的机器级表示

    目录 概述 一.历史观点 二.程序编码 2.1.机器级代码 2.2.代码示例 2.3.关于格式的注解 三.数据格式 四.访问信息 4.1.操作符指示符 4.2.数据传送指令 4.2.1.源操作数和目的 ...

  8. 《深入理解计算机系统》学习笔记——处理器体系结构

    计算机系统--处理器体系结构 Y86-64指令集体系结构 程序员可见的状态 Y86-64指令 指令编码 Y86-64异常 Y86-64程序 一些Y86-64指令的详情 逻辑设计和硬件控制语言HCL 逻 ...

  9. 深入理解JAVA虚拟机学习笔记11——JDK可视化工具-VisualVM以及案例分析

    VisualVM:多合一故障处理工具,功能比较全面的一个工具,与其它的检测工具相比,对实际性能影响很小,并且还具备安装插件功能.这个工具和前面介绍的JConsole工具有很多类似的功能,但是比JCon ...

  10. 【深入理解JVM】学习笔记——-1、JVM基本结构

    借花献佛:本篇主要来了解: 什么是jvm?JVM的基本结构, 也就是概述.说是概述,内容很多,而且概念量也很大, 不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成图形, 所以只要你有 ...

最新文章

  1. Linux中利用grep命令如何检索文件内容详解
  2. EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理
  3. 你自己永远是个非常非常弱小的一个东西
  4. JavaScript实现唯一路径问题的回溯方法的算法(附完整源码)
  5. JavaScript 标准参考教程-阅读总结(三)
  6. 利用Python中的BeautifulSoup库爬取豆瓣读书中书本信息
  7. 仿真的数据能否用来深度学习_数字孪生弥合了深度学习的数据鸿沟
  8. 【日志】数字电路电子钟制作日志
  9. IE, Firefox, Chrome共同的保存图片bug? 求助。
  10. 向日葵,teamviewer
  11. Linux下的Libsvm使用历程录
  12. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-855 国行/港行/美版】-【V10.0 Android-Q-TK1】...
  13. WPS三线表的绘制方法
  14. Arduino:实现四位LED共阴极数码管显示——从认识、连接、程序到实现功能
  15. 计算机的供电方式,电脑主板电源供电方式
  16. QQ群关键字提醒设置
  17. 逆向爬虫14 Mongo入门
  18. 巧妙隐藏Word文档中指定文字内容
  19. linux boost库安装
  20. Python《机器学习实战》读书笔记(四)——朴素贝叶斯

热门文章

  1. openGL使用方法教程
  2. 腾达老的路由器W311R-V2 升级固件为NH326 -路由器中继
  3. python实现QQ自动发送信息
  4. 漫游配置文件修改为强制配置文件|ntuser.dat ntuser.man
  5. 360真假u盘测试软件,360u盘鉴定器准不准?
  6. php做网站不兼容ie8,快速修复网页在IE8 下的显示兼容问题
  7. 【爬虫专栏17】多线程爬双色球
  8. 专家教你简单又轻松的MD5解密方法,一看就会
  9. 淘宝/天猫/京东/抖音直播年货节抢购秒杀助手更新下载,喵惠抢购助手支持自动免密支付,分享源码共同学习探讨
  10. Fedora 14 直接root登录