STM32F4的LED点灯

本文是STM32F4单片机的入门教程,讲解了如何通过配置寄存器来点亮PF9引脚上的LED灯。内容涵盖了位运算符、寄存器地址、GPIO端口配置步骤,包括时钟使能、工作模式设定、响应速度、上下拉电阻及输出数据寄存器的操作。
摘要由CSDN通过智能技术生成


前言

单片机开发第一站,LED点灯。

目标:点亮引脚PF9上的LED灯


一、使用到的运算符

我们在应用单片机进行各种控制时,都是利用计算机语言设置单片机的内部寄存器来完成操作的。在涉及寄存器的大部分操作中,C语言的位运算符是不可或缺的一环。

& 位逻辑与
| 位逻辑或
^ 位逻辑异或
~ 位逻辑非
以及 >> 右移和 << 左移

熟练掌握C语言中的位运算符以及进制之间的转换,对我们使用寄存器非常重要。

二、寄存器相关

对寄存器的配置:先清零,后设置;先读,再改,后写入。

1.寄存器地址

相关操作将以下列代码为例;

#define GPIOF_ODR(*(volatile unsigned int*)0x40021414)

示例中模块基地址及使用到的寄存器在模块中的偏远地址如表1-1所示

基地址:STM32的每个模块都包含多个寄存器,它们的地址通常是连续的,而第一个寄存器的地址(即地址值最低的地址),就是基地址。

偏移地址:寄存器在本模块中的地址偏移量。

绝对地址:即寄存器的实际地址,相当于基地址+偏移地址。

2.寄存器定义过程

表1-1中的GPIOF_MODER等不过是开发人员为了便于操作人为定义的符号,使这些符号能够真正的代表其对应的寄存器单元,还需要进一步处理。

  • 找到GPIOF输出数据寄存器的绝对地址:0x40021414
  • 将十六进制数 0x40021414 转为地址:强制类型转换(*) 0x40021414
  • 说明地址(*) 0x40021414指向的存储单元的数据类型:由于寄存器中存放的都是无符号整型数据,故有(unsigned int*) 0x40021414
  • 使用volatile修饰地址,确保处理器每次都是对相应寄存器单元进行操作,避免没必要的数据读写错误:(volatile unsigned int*) 0x40021414
  • 将地址转为地址指向的储存单元:*(volatile unsigned int*) 0x40021414
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值