STM32G0x0系列-点亮一盏灯(寄存器)

目录

输入功能

浮空输入:通俗讲就是让管脚什么都不接,悬空着。

上拉输入

下拉输入

模拟输入

输出功能

开漏输出

推挽输出

相关寄存器

GPIOx_MODER 端口模式寄存器

GPIOx_OTYPER 端口输出类型寄存器

GPIOx_ OSPEEDR 端口输出速度寄存器

GPIOx_PUPDR 上拉/下拉寄存器

GPIOx_IDR 端口输入数据寄存器

GPIOx_ODR 端口输出数据寄存器

GPIOx_BSRR 置位 / 复位寄存器

 输出试验:点亮一盏灯

》1.查看自己想要点亮的灯编号

​编辑

 》2.对比电路原理图

》3.编程实现

 结果:


输入功能

浮空输入:通俗讲就是让管脚什么都不接,悬空着。

此时VDD和VSS所在路径的两个开关同时断开。因为没有上拉和下拉,所以当IO口没有接输入的时候,此时的电平状态会是一个不确定的值,完全由外部输入决定。(一般实际运用时,引脚不建议悬空,易受干扰。 )

优势:这一种输入模式的电平会完全取决于外部电路而与内部电路无关

缺点:在没有外部电路接入的时候,IO脚浮空会使得电平不确定

应用:该模式是STM32复位之后的默认模式,一般用作对开关按键的读取或用于标准的通讯协议,比如IIC、USART的等

上拉输入

IO端口 - 上拉电阻 - 施密特触发器 - 输入数据寄存器 - 读

输入的电平不会因上下浮动而导致输入信号不稳定,当外部没有信号输入时,上拉电阻会将输入信号钳在高电平,此时引脚始终读到高电平信号。

下拉输入

IO端口 - 下拉电阻 - 施密特触发器 - 输入数据寄存器 - 读

输入的电平不会因上下浮动而导致输入信号不稳定,当外部没有信号输入时,下拉电阻会将输入信号钳在低电平,此时引脚始终读到低电平信号

模拟输入

未经任何处理的信号

信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。 所以可以理解为模拟输入的信号是未经处理的信号,是原汁原味的信号。

应用:当 GPIO 引脚用于 ADC 采集电压的输入通道时,则需要选择“模拟输入”功能,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。

输出功能

开漏输出

输出寄存器上的'0'激活 N-MOS,而输出寄存器上的'1'将端口置于高阻状态 (P-MOS 从不被激活 )。

### 配置 STM32G0 的 GPIO 寄存器 对于 STM32G0 系列微控制器而言,配置 I/O 方向寄存器涉及设置特定的位来定义引脚的方向(输入或输出)。这可以通过修改 `GPIOx_MODER` 寄存器实现,在该寄存器中每位代表一个引脚模式的选择。 具体来说: - 对于每个引脚,有两个连续的位用于指定其工作模式。例如,如果要配置 PA0,则需调整 `GPIOA->MODER[1:0]` 这两位。 - 设置这些位为 0b00 表示模拟输入;0b01 表示通用推挽输出;其他组合对应不同功能[^3]。 为了更直观理解这一过程,下面给出一段 C 语言代码片段展示如何通过编程方式设定某个 GPIO 引脚作为输出模式: ```c // 假定目标是使能并配置PA5为输出模式 RCC->IOPENR |= RCC_IOPENR_GPIOAEN; // 开启GPIOA时钟 GPIOA->MODER &= ~(0x3 << (5 * 2)); // 清除原有配置 GPIOA->MODER |= (0x1 << (5 * 2)); // 设定为推挽输出模式 ``` 上述操作首先确保了所选端口的时钟已经开启,接着清除掉之前可能存在的任何配置,最后按照期望的功能重新设置了相应的位。 当完成以上步骤之后,就可以利用类似如下语句控制 LED 或者连接到 P-MOSFET 上下拉电阻等外部设备的状态变化了: ```c GPIOA->ODR |= (1U<<5); // 将PA5设为高电平(点亮LED) // ... GPIOA->ODR &= ~(1U<<5); // 将PA5设为低电平(熄灭LED) ``` 值得注意的是,这里仅讨论了最基本的操作方法,实际应用中还应考虑更多细节如上/下拉电阻启用(`GPIOx_PUPDR`)、速度选择 (`GPIOx_OSPEEDR`) 和开漏输出选项 (`GPIOx_OTYPER`) 等因素的影响。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值