• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求助,为什么直接操作GPIO的BRR与BSRR寄存器不管用?

hehexi 2019-07-19 浏览量:1101
我要通过设置GPIOB.5(在战舰V3开发板上连接到了LED的DS0)来产生高低电平从而触发一个从设备的外部中断。但是我在下面程序段中操作寄存器也无法使得PB.5变为高电平(因为LED一直亮,我认为这就表示PB.5的电平仍为低电平)
//PB5 通过此GPIO发送读取时间的信号给次STM32
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
  GPIO_Init(GPIOB &GPIO_InitStructure);//初始化GPIOB.5
GPIOB->BSRR=GPIO_Pin_5;


与此同时,我在UART1的中断服务函数中使用同样的操作寄存器的方法和库函数的方法,问题依旧。
//GPIO_ResetBits(GPIOBGPIO_Pin_5);
GPIOB->BRR=GPIO_Pin_5;
  delay_ms(1000);
  //GPIO_SetBits(GPIOBGPIO_Pin_5);
  GPIOB->BSRR=GPIO_Pin_5;

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:1
  • 不要用复用功能,直接用推挽输出,还有gpiob的时钟没有打开,还有就是系统时钟配置是否正确,可以用内部时钟,不要超频测一下

相关问题

问题达人换一批

求助,为什么直接操作GPIO的BRR与BSRR寄存器不管用?