GPIO 端口模式寄存器 (GPIOx_MODER)

286 篇文章 70 订阅 ¥9.90 ¥99.00
该篇博客详细介绍了GPIO端口模式寄存器(GPIOx_MODER)的使用,通过宏定义展示了如何设置GPIO端口为输入或输出模式,例如SDIO_IN()和SDIO_OUT()。同时,文中还解释了HDC_SDA_IN()和HDC_SDA_OUT()这两个宏如何改变GPIOC的第9位为输入或输出模式。
摘要由CSDN通过智能技术生成

#define SDIO_IN()  {GPIOA->MODER&=~(3<<(7*2));GPIOA->MODER|=0<<7*2;}    //PB7输入模式
#define SDIO_OUT() {GPIOA->MODER&=~(3<<(7*2));GPIOA->MODER|=1<<7*2;} //PB7输出模式

#define RTD2553_SDIO    PAout(7) //SDIO
#define READ_SDIO       PAin(7) //SDIO
#define RTD2553_CS      PAout(4) //CS
#define RTD2553_CLK     PAout(5) //CLK

 解释输入输出模式操作:

HDC_SDA_IN() :

          GPIOC->MODER&=~(3<<(9*2));   //3的二进制表示为11,将11左移2*9=18位(由2y:2y+1确定端口9的配置位,即第19、18位),取反后与上GPIOC->MODER;此操作是使得GPIOC->MOD

在STM32微控制器中,GPIOX通常指的是某个具体的GPIO端口,例如GPIOA,GPIOB等。CRL是GPIO端口的配置寄存器(Configuration Register Low)。对于STM32F103系列等基于ARM Cortex-M3的微控制器来说,GPIO的配置主要通过两个寄存器来完成:CRL和CRH。CRL用于配置低8位的GPIO引脚,而CRH用于配置高8位的GPIO引脚。 以STM32F103为例,要将GPIOA的PA7配置为输入或输出模式,输出模式速度为高,可以通过设置GPIOA的CRL寄存器来实现。以下是一个简单的代码示例,展示了如何直接通过寄存器配置PA7为推挽输出模式,速度为50MHz: ```c #define GPIOA_BASE 0x40010800 #define RCC_APB2ENR (* (volatile unsigned long *) (0x40021018)) #define GPIOA_CRL (*(volatile unsigned long *) (GPIOA_BASE)) // 使能GPIOA时钟 RCC_APB2ENR |= 0x01; // RCC_APB2ENR的第0位是IOPAEN,用于使能GPIOA的时钟 // 配置PA7为输出模式,速度为50MHz // PA7的CRL配置位为[27:24] // 速度设置为0b10,即50MHz // 模式设置为0b10,即输出模式(推挽) GPIOA_CRL &= ~(0xF << 24); // 清除PA7的相关配置位 GPIOA_CRL |= (0x2 << 24); // 设置PA7为输出模式,速度为50MHz ``` 这段代码首先通过直接操作寄存器地址来使能GPIOA的时钟,然后通过设置CRL寄存器的特定位来配置PA7的模式和速度。这里的配置是针对STM32F103系列的,不同的STM32系列或者不同的MCU可能会有不同的寄存器地址和位定义,因此需要根据具体的数据手册进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毛毛虫的爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值