寄存器点亮LED

GPIO的工作模式

  • 输入模式(模拟/浮空/上拉/下拉)

    输入模式中,施密特触发器打开,输出被禁止,可以通过输入数据寄存器GPIOx_IDR读取I/O状态。

    • 上拉/下拉:默认的电平由上拉或者下拉决定
    • 浮空:输入的电平不确定,完全由外部的输入决定,一般接按键的时候用的是这个模式
    • 模拟:用于ADC采集
  • 输出模式

    输出数据寄存器GPIOx_ODR可控制I/O输出高低电平

    • 开漏:只有N-MOS管工作,输出寄存器可控制I/O输出高阻态或低电平,输出速度可配置,有2MHZ,10MHZ,50MHZ的选项,此处输出速度即I/O支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可

      输出模式下施密特触发器打开,输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态

  • 复用功能(推挽/开漏)

    输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其他外设,输出数据寄存器GPIOx_ODR无效,输入可用,通过输入数据寄存器可获取I/O实际状态,但一般直接用外设的寄存器来获取该数据信号

开启外设时钟

设置完 GPIO 的引脚,控制电平输出,以为现在总算可以点亮 LED 了吧,其实还差最后一步。由 于 STM32 的外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些 时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开

所有的GPIO都挂载到APB2总线上,具体的时钟由APB2外设时钟使能寄存器(RCC_APB2ENR)来控制

B2外设时钟使能寄存器(RCC_APB2ENR)来控制

image-20230304162809974

### 使用寄存器控制LED点亮的方法 通过寄存器操作点亮LED的过程涉及硬件连接、寄存器配置以及代码实现。以下是详细的技术说明和代码示例。 #### 硬件连接 为了实现通过寄存器点亮LED,需要准备以下硬件设备并完成连接: - 单片机(如STM32系列或其他微控制器) - LED灯 - 限流电阻 - 连接线 具体连接方式为:将LED的正极连接到单片机的一个GPIO引脚,负极通过一个适当阻值的电阻接地[^1]。 #### 寄存器配置 在代码中,需要对单片机寄存器进行配置以实现LED点亮。以下是主要步骤: 1. **包含头文件**:确保包含与目标单片机相关的头文件(如`stm32f10x.h`),以便访问寄存器定义。 2. **初始化系统时钟**:调用`SystemInit`函数初始化系统时钟[^3]。 3. **使能GPIO外设时钟**:通过设置RCC_APB2ENR寄存器的相应位来使能目标GPIO端口的时钟。 4. **配置GPIO模式**:通过CRx寄存器(如CRL或CRH)将目标引脚配置为输出模式。 5. **设置输出电平**:通过ODR寄存器或BSRR寄存器控制目标引脚的高低电平。 #### 示例代码 以下是一个基于STM32F103的代码示例,展示如何通过寄存器操作点亮连接在PB5引脚上的LED。 ```c #include "stm32f10x.h" int main() { // 1. 使能GPIOB时钟 RCC->APB2ENR |= (1 << 3); // 设置RCC_APB2ENR寄存器的第3位,使能GPIOB时钟[^3] // 2. 配置PB5为推挽输出模式 GPIOB->CRL &= ~(0xF << (4 * 5)); // 清除PB5对应的4位 GPIOB->CRL |= (0x02 << (4 * 5)); // 设置PB5为推挽输出模式 // 3. 控制PB5输出低电平点亮LED while (1) { GPIOB->BSRR = (1 << (5 + 16)); // 设置PB5为低电平,点亮LED } } void SystemInit(void) { // 初始化函数,此处不进行任何操作 } ``` #### 注意事项 - 在实际应用中,需根据具体的单片机型号和硬件设计调整寄存器地址和配置方法。 - 确保LED的电流限制在安全范围内,通常使用220Ω或330Ω的电阻作为限流电阻[^1]。 - 如果使用其他类型的单片机(如AVR或PIC),寄存器名称和地址可能会有所不同,但基本原理相同。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值