首页 > 编程知识 正文

stm32双向io怎么设置,stm32IDR寄存器

时间:2023-05-03 16:49:47 阅读:140188 作者:2370

STM32的寄存器非常多,要一个个弄清楚并不容易。 所以,我们在学习的时候要抓住重点,选择重要的东西去学习和记忆。 STM32配置一个个寄存器相当麻烦,即使我们实际开发也不会配置一个个寄存器,所以只需要记住常用外围设备的几个寄存器“http://www.Sina .”

用法

两个都是32位寄存器。 对于STM32,其GPIO端口只有高低两个参数,如51单片机。 STM32的各GPIO端口有8种输出方式,寄存器配置决定哪种方式。 此外,由于输出速度也是GPIO端口的重要参数之一,所以描述STM32的一个GPIO端口需要4个比特(8个输出方式和3个输出速度),STM32的一个GPIO组有16个GPIO端口CRL描述一个GPIO组的低8位GPIO ),而CRH描述一个GPIO组的高8位GPIO

作用

IDR是端口输入数据寄存器,只使用了低位16位。 该寄存器是只读的,且只能作为16位数据读取。 作用是读取寄存器的状态是低位还是高位。 要知道具体是哪个寄存器,需要看具体的该位的值。 在固件库中,它是通过GPIO_ReadInputDataBit函数实现的。

uint8_ TGP io _ readinputdatabit (gpio _ typedef * gpiox,uint16_t GPIO_Pin ) )例如,要读取GPIOA.5的状态,请执行以下操作:

gpio_readinputdatabit(gpioa,GPIO_Pin_5); 返回值可以是1(bit_set )或0(Bit_RESET );

ODR是端口输出数据寄存器,只使用了低位16位。 此寄存器可读写,从此寄存器读取的数据可用于确定当前IO端口的输出状态。 要在固件库中设置ODR寄存器的值以控制IO端口的输出状态,请使用函数GPIO_Write。

void gpio _ write (gpio _ typedef * gpiox,uint16_t PortVal ); 此函数通常在一次往返于一个GPIO的多个端口上设置值。

一、CRL和CRH寄存器

BSRR寄存器为端口位设置/清除寄存器。 该寄存器和ODR寄存器具有同样的作用,均可用于设定GPIO端口的输出位是1还是0。 这个寄存器举个例子就很清楚它的使用方法。 例如,要将GPIOA的第一个端口的值设置为1,只需将1写入寄存器BSRR的低16位。

GPIOA-BSRR=11; 将GPIOA的第一个端口的值设定为0时,应对寄存器的16位高位写入1即可:

gpioa-bsrr=1(161 )该寄存器在对应的位上写入0也不会影响,因此设定位时不考虑其他位的值。

二、IDR和ODR寄存器

BRR寄存器是端口位清除寄存器。 该寄存器的作用与BSRR的前16位雷同。 在使用固件库进行开发时,通过函数GPIO_SetBits (和函数GPIO_ResetBits ),使用BSRR和BRR寄存器设置GPIO端口输出。

void gpio _ set bits (gpio _ typedef * gpiox,uint16_t GPIO_Pin ); 与void gpio _ reset bits (gpio _ typedef * gpiox,uint16_t GPIO_Pin ) gpio相关的函数在此讨论。 IO操作步骤很简单,但这里是概要

的总结、操作步骤如下。

1 )启用IO端口时钟。 调用函数为RCC_APB2PeriphClockCmd ()。

2 )初始化IO参数。 函数GPIO_Init (;

3 )操作IO。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。