|
每个通用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口内部有弱上拉电阻和弱下拉电阻,输入时可选使能。
|
|