弟4 章I/O 端口及中断I/O 口(GPIO)一、GPIO 的概述:GPI/O,通用型之输入输出(General Pu rpose I/O)的简称,对于 stm32 的学习,应该从最基本的 GPIO 开始学习:首先看看 STM32的 datasheet 上对 GPIO 口的简单介绍:每个 GPI/O 端口有两个 32位配置寄存器(GPIOx _CRL,GPIOx _CRH),两个 32 位数据寄存器(GPIOx _IDR,GPIOx _ODR),一个 32 位置位/复位寄存器(GPIOx _BSRR),一个 16 位复位寄存器(GPIOx _BRR)和一个 32 位锁定寄存器(GPIOx _LCKR)。共 7 组寄存器。 GPIO 端口的每个位可以由软件分别配置成多种模式。每个 I/O 端口位可以自由编程,然而 I/0 端口寄存器必须按 32 位字被访问(不允许半字或字节访问)。GPIOx _BSRR 和 GPIOx _BRR 寄存器允许对任何 GPIO 寄存器的读/更改的独立访问;这样,在读和更改访问之间产生 IRQ 时不会发生危险。我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR 、ODR 。 CRL 和 CRH 控制着每个 IO口的模式及输出速率。二、 GPIO 的配置:当使用 GPIO 时,需要两步。一是:配置模式,二是配置时钟。对于模式配置共有 8 种,可以通过编程选择:1. 浮空输入 :GPIO_Mode_IN_FLOATING2. 带上拉输入:GPIO_Mode_IPU3. 带下拉输入:GPIO_Mode_IPD4. 模拟输入:GPIO_Mode_AIN5. 开漏输出:GPIO_Mode_Out_OD6. 推挽输出:GPIO_Mode_Out_PP7. 复用功能的推挽输出:GPIO_Mode_AF8. 复用功能的开漏输出:GPIO_Mode_AF_OD模式7 和模式8 需根据具体的复用功能决定。时钟配置将会在后续课程中一一介绍。I/O 口的输出模式下,有3 种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。这个速度是指 I/O 口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O 口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI 性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。三、GPIO 的功能:1.通用I/O(GPIO):最最基本的功能,可以驱动 LED、可以产生PWM、可以驱动蜂鸣器等等;2.单独的位设置或位清除:方便软体...