stm32中GPIOB->BSRR这句话是啥意思?是否跟GPIOB.BSRR意思一样?一定采纳
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32中GPIOB->BSRR这句话是啥意思?是否跟GPIOB.BSRR意思一样?一定采纳相关的知识,希望对你有一定的参考价值。
GPIOB->BSRR这句话中的GPIOB其实是一个结构体类型的指针,可以看一下固件手册中关于GPIO中GPIO寄存器结构的描述。GPIO这个指针指向的数据类型是机构体,而这个结构体包含了BSRR这个寄存器。所以GPIOB->BSRR可以理解为对BSRR这个寄存器的操作。比如楼下的回答GPIOB->BSRR = 0x01,其实就是对BSRR这个寄存器赋值。GPIOB.BSR这个写法是不对的,因为GPIOB是指针,不是结构体类型。可以这样写GPIO_TypeDef.BSR 参考技术A GPIOB->BSRR = 0x01就是把GPIOB port 0升为高电平
GPIOB->BRR = 0x01就是把GPIOB port 0降为低电平
GPIOB->BSRR = 0x02就是把GPIOB port 1升为高电平
GPIOB->BRR = 0x02就是把GPIOB port 1降为低电平
GPIOB->BSRR = 0x04就是把GPIOB port 2升为高电平
GPIOB->BRR = 0x04就是把GPIOB port 2降为低电平
GPIOB->BSRR = 0x08就是把GPIOB port 3升为高电平
GPIOB->BRR = 0x08就是把GPIOB port 3降为低电平本回答被提问者和网友采纳 参考技术B GPIOB->BSRR把GPIOB中的某个pin置高 参考技术C GPIOB->BSRR把GPIOB中的某个pin置高 参考技术D
GPIOB->BSRR是指向结构体结构体,每个元素有自己的内存
GPIOB.BSRR是联合体,是共用内存
意思你可以看库文件
STM32F103引脚输入输出冲突?模拟IIC与网络模块在一组IO上无法同时使用!
//IO方向设置
#define SDA_IN() GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x80000000;
#define SDA_OUT() GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=0x30000000;
//IO操作函数
#define IIC_SCL PBout(6) //SCL
#define IIC_SDA PBout(7) //SDA
#define READ_SDA PBin(7) //输入SDA
。。。。。。。。。。。。
void SPI1_Init(void)
RCC->APB2ENR|=1<<3; //PORTB时钟使能
RCC->APB1ENR|=1<<14; //SPI2时钟使能
//这里只针对SPI口初始化
GPIOB->CRH&=0X000FFFFF;
GPIOB->CRH|=0XBBB00000;//PB13,14,15复用
GPIOB->ODR|=0X7<<5; //PB13,14,15上拉
SPI2->CR1|=0<<10;//全双工模式
SPI2->CR1|=1<<9; //软件nss管理
SPI2->CR1|=1<<8;
SPI2->CR1|=1<<2; //SPI主机
SPI2->CR1|=0<<11;//8bit数据格式
SPI2->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1
SPI2->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1
SPI2->CR1|=7<<3; //Fsck=Fpclk2/256
SPI2->CR1|=0<<7; //MSBfirst
SPI2->CR1|=1<<6; //SPI设备使能
SPI1_ReadWriteByte(0xff);//启动传输
上面是代码部分,如果将第一行的IO换成PA网络模块就能正常工作。我的硬件已经做好了不能更改!请问是什么问题引起的冲突
以上是关于stm32中GPIOB->BSRR这句话是啥意思?是否跟GPIOB.BSRR意思一样?一定采纳的主要内容,如果未能解决你的问题,请参考以下文章
STM32中GPIOD->BSRR = addr(0x0000ffff<<16); <<16是啥意思
请教STM32知识点:GPIOA->BSRR 与GPIOA->BRR两个管脚寄存器
关于STM32 GPIO->BSRR GPIO->BRR的问题
关于STM32的简单问题,GPIOA->BSRR=0x080004;这样写对吗?