STM32F407-寄存器编程点亮LED小灯

原理:由STM32控制引脚输出高、低电平,实现开关控制,把GPIO引脚接入到LED灯,从而控制LED灯的亮灭。将GPIO对应引脚设置成推挽输出模式并且默认下拉,输出低电平,就可以让LED灯亮起来。假设我们要点亮的是红灯

定义启动文件:“startup_stm32f40xx.s”
定义stm32f4xx.h 文件,在其中写好存储器映射,在写存储器映射时,要将无符号数表示的地址显示地转换成指针(指针就是地址,计算机并不知道这一串无符号数表示地址)

三步走点亮小灯:

  1. 将连接到RGB红灯的PF6引脚配置成输出模式,即配置GPIO的MODER寄存器
  2. 对BSRR寄存器和ODR寄存器写入参数即可控制引脚的电平状态,简单起见,此处使用BSRR寄存器控制。对相应的BR6位设置为1时PF6即为低电平,点亮LED灯对它的BS6位设置为1时PF6即为高电平关闭LED灯。
  3. 开启GPIO的外设时钟,RCC_AHB1ENR

另外还有一些小细节,可参考开发指南

参考文献
《1-STM32F4xx中文参考手册》
[野火EmbedFire]《STM32库开发实战指南——基于野火霸天虎开发板》—20210107

<think>嗯,用户让我写一个关于使用STM32F103RC寄存器点亮小灯的实习记录,200字左右。首先,我需要确定用户的需求是什么。他们可能是在进行嵌入式系统的学习,特别是STM32微控制器的底层寄存器操作。用户可能希望了解如何不依赖库函数,直接通过配置寄存器来控制GPIO,从而点亮LED灯。 接下来,我得回忆STM32F103RC的寄存器配置步骤。首先,需要使能GPIO端口的时钟,这涉及到RCC寄存器的配置,比如APB2ENR寄存器中的对应位。然后配置GPIO的工作模式,比如推挽输出,需要设置CNF和MODE位。这里可能需要查证GPIOx_CRL或CRH寄存器的具体位设置,因为不同引脚属于不同的配置寄存器,低八位用CRL,高八位用CRH。 然后,实际操作中需要确定LED连接的引脚,比如PC13。这时候需要配置GPIOC的端口配置寄存器,设置PC13为输出模式,速度等。最后,通过写ODR寄存器或者BSRR寄存器来控制引脚的电平,从而点亮或熄灭LED。 用户可能遇到的困难包括不熟悉寄存器的地址和位定义,以及如何通过指针访问寄存器。需要确保在代码中正确使用volatile指针来避免编译器优化问题。此外,可能还需要检查硬件连接,比如LED的极性是否正确,是否需要上拉或下拉电阻。 另外,用户可能希望实习记录包含具体的步骤和学到的内容,比如直接操作寄存器与库函数的不同,对底层硬件的理解加深,以及调试过程中遇到的问题,比如时钟未使能导致配置无效等常见错误。需要简明扼要地概括这些点,保持在200字左右,结构清晰,步骤明确。</think>**实习记录:STM32F103RC寄存器方式点亮LED** 在本次实验中,通过直接操作STM32F103RC寄存器实现LED点亮,主要步骤如下: 1. **时钟使能**:通过设置`RCC_APB2ENR`寄存器的第4位(IOPCEN=1),使能GPIOC时钟。 2. **配置引脚模式**:对`GPIOC_CRH`寄存器编程,将PC13引脚配置为推挽输出模式(CNF13=00,MODE13=11,即50MHz输出)。 3. **控制输出电平**:通过`GPIOC_ODR`寄存器第13位(ODR13=0)输出低电平,驱动LED导通。 **关键代码**: ```c *(volatile uint32_t*)0x40021018 |= 0x10; // RCC_APB2ENR使能 *(volatile uint32_t*)0x40011004 &= ~(0xF << 20); // GPIOC_CRH清零配置位 *(volatile uint32_t*)0x40011004 |= 0x03 << 20; // PC13设为50MHz推挽输出 *(volatile uint32_t*)0x4001100C &= ~(1 << 13); // ODR13置0,点亮LED ``` **总结**:通过寄存器操作深入理解了STM32外设控制流程,掌握了地址映射与位操作的核心方法,为后续开发打下硬件基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值