GPIO学习_寄存器编程跑马灯

I/O端口位的基本结构

在这里插入图片描述

底层寄存器编程实现跑马灯

查看板卡对应端口
在这里插入图片描述
每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。每个寄存器的不同位对应不同端口,例如:下面对GPIOE14、GPIOE12、GPIOE10的模式进行设置
(1)对应查手册
在这里插入图片描述
(2)可以得出:

GPIOE_MODER|=0x11110000;                     //引脚工作模式为输出
GPIOE_OTYPER|=0x00000000;                     //引脚输出模式推挽
GPIOE_OSPEEDER|=0x22220000;                    //引脚工作时钟速度
GPIOE_PUPDR|=0x11110000;                      //上拉模式

寄存器编码汇总如下
在这里插入图片描述
define 部分映射地址,查看表格

完整代码如下:

  
typedef unsigned           int uint32_t;
typedef unsigned           int uint16_t;
typedef uint16_t u16;
typedef uint16_t vu16;

void Delay(vu16 count);

/********************总线定************************/
#define APB2PERIPH_BASE       (0x40010000)
#define AHB1PERIPH_BASE       (0x40020000)

/********************RCC定义************************/

#define GPIOE_MODER           (*(uint32_t *)0x40021000)
#define GPIOE_OTYPER          (*(uint32_t *)0x40021004)
#define GPIOE_OSPEEDER          (*(uint32_t *)0x40021008)
#define GPIOE_PUPDR          (*(uint32_t *)0x4002100c)
#define GPIOE_BSRR          (*(uint32_t *)0x40021018)
#define RCC_AHB1ENR           (*(uint32_t *)0x40023830)

void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值