历史上的今天
今天是:2024年09月06日(星期五)
2018年09月06日 | STM32---对GPIO电路结构的理解(输出电路)
2018-09-06 来源:eefocus
前一段时间学习了STM32,先是用库函数学了一个星期。发现学完之后,一些基本要用的东西能配出来,但是过程却是十分的懵逼。于是决定暂时放弃库函数,用51的思维学习32,从寄存器开始,发现效果不错。一两天学一两个模块,个把星期下来对一些基本模块的常用寄存器也理解的不少。决定慢慢的回归库函数之前写下自己对STM32一些模块的理解,共勉之。
首先附上GPIO口的内部电路图:
其中蓝色方框部分代表的是GPIO的输入电路,红色方框的部分,代表GPIO的输出电路。
可见:
从写入端看输出部分的四种模式分别是:通用推挽输出、通用开漏输出、复用推挽输出、复用开漏输出。
接下来分析输出电路的四种输出形式(数据从“1”或“2”端到 I/O 端口。注意:此时输入电路会被屏蔽【通过寄存器配置】):
1、通用推挽式输出:
通过“写操作”到“位设置/清除寄存器”从而改变“输出数据寄存器”,或者直接通过“读/写操作”改变“输出数据寄存器”,后经选择器“4”选择输出的数据源(来自“1”、“2”还是“3”),最后通过“5”输出的电平 1 或 0 ,来控制P-MOS和N-MOS的导通或截止。
比如, 当5输出 1 时,P-MOS导通,N-MOS截止,则输出到 I/O 端口的电压为VDD(高);当5输出上端为 0 ,P-MOS截止,N-MOS导通,则输出到 I/O 端口的电压被拉低至为VSS(低)。
2、通用开漏输出(P-MOS管处于关闭状态):
跟据“5”的输出 1 、 0 来控制MOS管。
当“5”输出为 1 时,N-MOS处于关闭状态,则此时 I/O 电平不由5输出的电平决定,而由 I/O 端口的外部电路决定(例如外部上拉或下拉);
当“5”输出为 0 是,N-MOS处于导通状态,则 I/O 口的输出电平被拉至VSS(低)。
3、复用推挽输出:
与通用推挽输出的不同点是控制电路“5”之前的电路,通用推挽输出的输出取决于我们写输出寄存器决定,而复用开漏输出,由外部复用功能的外设决定,其余部分的分析方式相同。
4、复用开漏输出:
与通用开漏输出的不同点是控制电路“5”之前的电路,通用开漏输出的输出取决于我们写输出寄存器决定,而复用开漏输出,由外部复用功能的外设决定,其余部分的分析方式相同。
上一篇:stm32 IO操作备注
史海拾趣
|
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来 ...… 查看全部问答> |
|
你第一linux操作系统是什么,你现在用什么linux操作系统 调查,我的第一个linux操作系统是ubuntu,我从09年暑假开始接触linux,装的就是ubuntu8.04,然后虽然接触过fedora,redhat,debian,suse等,但一直觉得ubuntu爽快,哈哈,现在一直在用ubuntu,甚至开发FPGA,大家呢,欢迎大家讨论… 查看全部问答> |
|
安装了controlSUIT,开始回顾TI的例程,用官方的.c文件,建了工程,编译通过了。 Piccolo的资料相对没有2812那么多。进度不是很快,有压力啊。… 查看全部问答> |
|
一直想把ucosII V2.92移植到LM3S9B92上去,但前前后后搞了将近三个星期了,还是没有一点结果,指针总是越界,第一个任务还没启动起来就会进入死循环,真是郁闷啊。… 查看全部问答> |
|
写了个串口调试程序用来测试板子各个工作点状态的,但是居然第一次烧录几次后CPLD就不能再烧录了干脆坏掉了,只能换芯片,要知道100脚的epm570更换起来多费时间。是不是程序导致芯片内部短路了?… 查看全部问答> |
|
【NUCLEO-F410RB】2.给nucleo移植上ucos-ii,用信号量实现led闪烁 本帖最后由 caizhiwei 于 2015-12-6 17:17 编辑 虽然管理员寄过来的板子不能用,但是还得完成任务。所以抽出时间把ucos-ii移植上另外一块Nucleo板子上,奉上工程源码,供大家享用~~ int main(void) {   ...… 查看全部问答> |




