标题:
STM32F103 GPIO学习总结
[打印本页]
作者:
qinqin
时间:
2015-6-6 21:30
标题:
STM32F103 GPIO学习总结
每个通用IO口都有两个32位的配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位的数据寄存器 (GPIOx_IDR, GPIOx_ODR), 一个32位的set/reset寄存器 (GPIOx_BSRR),一个16位的reset寄存器(GPIOx_BRR),一个32位的锁定寄存器(GPIOx_LCKR).
每个general purpose io口都可以独立配置为以下八种模式的其中一种,浮空输入,上拉输入,下拉输入,模拟输入,开漏输出,推挽输出,复用开漏输出,复用推挽输出。
每个io口都可以独立配置,但是寄存器只能32位的访问,不支持半个字的访问和位访问,GPIOx_BSRR和GPIOx_BRR寄存器允许对任何gpio寄存器的读和修改独立访问,这样,在读和修改访问之间产生IRQ时不会有风险。
stm32的io口是3.3V的但兼容5V输入,在3.3V供电的stm32芯片中,要输出5V电平,只需将io口配置为开漏输出然后接上拉电阻即可。
复位后stm32的io口默认为浮空输入模式 (CNFx[1:0]=01b, MODEx[1:0]=00b). JATG管脚为上拉或下拉模式,
PA15: JTDI 上拉 PA14: JTCK 下拉 PA13: JTMS 上拉 PB4: JNTRST 上拉 。
当配置为输出模式时被写入输出数据寄存器 (GPIOx_ODR) 里的值在管脚上输出,可能用推挽输出和开漏输出(输出低电平时仅NMOS使能)。
在每个APB2时钟下 Input Data register (GPIOx_IDR) 捕获io口的状态。
每个GPIO口内部有弱上拉电阻和弱下拉电阻,输入时可选使能。
作者:
cmc987567
时间:
2015-6-7 16:18
谢谢分享,拷走了,
作者:
qinqin
时间:
2015-6-8 01:21
如果配置一个引脚为复用功能输出,将断开输出寄存器与引脚的连接,并将引脚与片内外设连接。
如果配置一个引脚为复用功能,但片内外设没有工作,那么引脚的输出是不确定的。
IO的重映射:为了使不同封装的外设的io功能数量达到最优,可以把一些引脚的复用功能重映射到其他引脚上,这是通过软件配置相应寄存器来实现的。这时原引脚就没有这些功能了。
GPIO锁定系统:GPIO锁定系统允许io的配置被冻结,当一个端口执行锁定程序,在下一次复位之前,不能更改端口位的配置。
输入配置:当io口被配置为输入模式时,输出缓冲器被禁止,施密特触发器输入使能,内部弱上拉电阻和下拉电阻使能或不取决与输入配置(上拉,下拉,或浮空),每个APB2周期io口的状态都会被采样到 Input Data Register ,访问 Input Data Register 可以知道io口状态。
输出配置:当io口被配置为输出模式时,开漏模式时输出0使能NMOS,输出1将使端口进入高阻抗状态(PMOS不被激活),施密特触发输入被激活,弱上拉下拉电阻被禁用,每个APB2周期io口的状态都会被采样到 Input Data Register ,访问 Input Data Register 可以知道io口开漏输出模式的状态,访问 Output Data register可以获得最后一个在推挽输出模式输出的值。
复用功能配置:当io口被配置为复用功能,开漏输出和推挽输出时输出缓冲器打开,内置外设信号驱动输出缓冲器(复用功能输出),施密特触发输入使能,弱上拉下拉电阻被禁用,每个APB2周期io口的状态都会被采样到 Input Data Register ,访问 Input Data Register 可以知道io口开漏输出模式的状态,访问 Output Data register可以获得最后一个在推挽输出模式输出的值。
启动复用功能寄存器允许你将复用放入功能映射到其他的引脚。
模拟输入配置:当io口被配置为模拟输入模式,输出缓冲器被禁止,施密特触发器禁用使模拟输入的io口0消耗,施密特触发器的输出置零,访问 Input Data Register 得到零。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1