OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2595|回复: 2

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

[复制链接]

7

主题

23

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-7-8
在线时间
9 小时
发表于 2019-7-18 17:38:36 | 显示全部楼层 |阅读模式
6金钱
我要通过设置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(GPIOB,GPIO_Pin_5);
GPIOB->BRR=GPIO_Pin_5;
  delay_ms(1000);
  //GPIO_SetBits(GPIOB,GPIO_Pin_5);
  GPIOB->BSRR=GPIO_Pin_5;

最佳答案

查看完整内容[请看2#楼]

你得把IO口设置成推挽输出,才可以控制
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-7-18 17:38:37 | 显示全部楼层
你得把IO口设置成推挽输出,才可以控制
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-7-8
在线时间
9 小时
 楼主| 发表于 2019-7-19 09:19:38 | 显示全部楼层
本帖最后由 Cuifamily111 于 2019-7-19 11:00 编辑
正点原子 发表于 2019-7-18 17:38
你得把IO口设置成推挽输出,才可以控制
抱歉,我刚明白原来复用推挽输出和推挽输出是不同的......
那复用推挽输出指的是内部外设复用一个端口作为输出,推挽输出是内部ODR输出吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 05:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表