GPIOB->BSRR把GPIOx中的某个pin置高
0x01只是8位,是00000001,但是GPIOx_BSRR是个32位的寄存器,所以要拓展转成32位的 即0x0001,转完就左移pinpos这个变量值的这么多位。(刚刚看到的回答,学习一下)第二个这个就是左移,GPIOA->ODR是控制GPIOA组IO口的输出电平高低,1就是拉高了,但是GPIOA->ODR|=1只是PA.1拉高而已,因此要...
(1)ODR设置位值时是影响其他的位,ODR使用时先读取其状态才能设置其值 (2) BSRR寄存器设置位值的时候,不会影响到其他的位的输出或输入。
1个 32 位的置位/复位寄存器BSRR; 1个 16 位的复位寄存器 BRR; 1个 32 位的锁存寄存器 LCKR; 第二个参数是GPIO_Init:它的类型是GPIO_InitTypeDef *,指向结构体变量(GPIO_InitTypeDef )的指针,其中GPIO_InitTypeDef结构体包含了Pin,mode ,pull,speed等几个成员变量,分别描述了GPIO口的速度,模式,和端口上拉或...
但是呢,用STM32开发时这些在头文件里已经做好了(stm32f10x.h)。我就以GPIOA的Pin_0作为输出引脚为例: 库函数: void GPOIA_CONFIG(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟 ...
比如我要让GPA0变为高电平,可以有两种做法:1、GPIOA->ODR|=GPIO_Pin_0;2、GPIOA->BSRR=GPIO_Pin_0;比如我要让GPA0变为低电平,可以有两种做法:1、GPIOA->ODR&=~GPIO_Pin_0;2、GPIOA->BSRR=GPIO_Pin_0;可以看到都是只改变一个IO口电平的时候,明显第2中方法要更加简单一些。
0x01是8位的 二进制是00000001 这里要转成32位的 即0x0001,这句话的意思是将这个1转换成32位之后左移pinpos这个变量值的这么多位!串口编程啊,孩子,这个GPIO口的BSRR寄存器置位操作!
STM32处理器的USB接口可达12Mbit/s。 2021-11-1 15:49:39 评论 举报 杨帆 提交评论 答案对人有帮助,有参考价值 0 GPIOX_BSRR和GPIOX_BRR寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作。 2021-11-1 15:50:03 评论 举报 刘桂兰 提交评论 只有小组成员才能发言,加入小组>> STM32...
百度试题 题目操作置位/复位寄存器 (GPIOx_BSRR),改变哪个寄存器()的内容,进而更改引脚电平 相关知识点: 试题来源: 解析 输出数据寄存器 反馈 收藏