
概述 STM32F103RCT6 共4组IO口 16*3+3 = 51个IO口 GPIOA0 ~ A15 GPIOB0 ~ B15 GPIOC0 ~ C15 GPIOD0 ~ D2 IO口的基本结构 ![]() 4种输入模式 输入浮空 ![]() 输入上拉 上图中上面打叉的部分开关闭合,上拉电阻约为30至50k 输入下拉 与上类似 模拟输入 ![]() 4种输出模式 开漏输出 ![]() 开漏复用功能 ![]() 推挽式输出 推挽式复用功能 3种最大翻转速度 2MHz 10MHz 50MHz 每组IO口包括的寄存器 两个32位配置寄存器,GPIOx_CRL GPIOx_CRH 两个32位数据寄存器,GPIOx_IDR GPIOx_ODR 一个32位置位/复位寄存器,GPIOx_BSRR 一个16位复位寄存器,GPIOx_BRR 一个32位锁存寄存器,GPIOx_LCKR 每个IO端口位允许自由编程,然后IO端口寄存器必须按32位字进行访问,不允许字节访问 对于一组IO口,每个IO口的配置需要寄存器的4位,每组一共16个IO口,因此需要寄存器的64位,由于STM32是32位的,所以分成了2个寄存器去配置 GPIOx_CRL ![]() GPIOx_CRH ![]() 每个IO口的配置需要寄存器的4位,其中2位是模式位MODE,2位是配置位CNF 输入数据寄存器 GPIOA_IDR分别对应每一位,即GPIOx_IDR0对应PA0 输出数据寄存器 GPIOA_ODR与上类似 GPIOx_BSRR置位寄存器 其实就是控制下图红框中的部分 ![]() 例如,我要操作某一位,使其置1,则只需要将这一位置1,其他位置0即可,与ODR寄存器不同的是,ODR寄存器给1就是1,给0就是0,BSRR给1就是1,给0不修改 通常只使用BSRR的低16位 GPIOx_BRR置位寄存器 类似 通常只使用BRR的低16位 端口复用 相当于是一个开关 端口重映射 方便布线,参考Datasheet里的Remap STM32的所有IO口都可以作为中断输入 GPIO查看MODE、PIN、SPEED的可选项 ![]() ![]() 类似地,查看PIN ![]() 查看SPEED ![]() ———————————————— 版权声明:CodeForCoffee |