你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 15964|回复: 9

【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

[复制链接]

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-10-10 16:53:24 | 显示全部楼层 |阅读模式
新手求助、用库函数操作GPIO,按键按下LED灯亮、再按下LED灯灭,如此反复,用库函数能实现吗?
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-10-10 17:23:13 | 显示全部楼层

RE:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

能。可以直接对PIN引脚操作。详细情况参见:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-10-10 23:10:12 | 显示全部楼层

回复:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

回复第 2 楼 于2011-10-10 09:23:13发表:
能。可以直接对PIN引脚操作。详细情况参见:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pi
 GPIO_SetBits、GPIO_ResetBits    不能取反啊  因为我是要在每次按键按下后,灯由亮到灭或由灭到亮
回复 支持 反对

使用道具 举报

0

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-10-11 11:47:10 | 显示全部楼层

RE:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

if(GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) == Bit_SET)
    GPIO_ResetBits (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
else
    GPIO_SetBits (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
回复 支持 反对

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-10-11 12:25:34 | 显示全部楼层

RE:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

一般read GPIO的状态时要设置成input模式,,否则读出来的不一定准。所以最好是用一个变量记录GPIO的状态,根据次变量去改变状态。。
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-10-11 14:32:09 | 显示全部楼层

回复:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

回复第 4 楼 于2011-10-11 03:47:10发表:
if(GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) == Bit_SET)
GPIO_ResetBits (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
else
GPIO_SetBits (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 

 
 
这种方法不可以的、只在按键按下的时候会变化,那么按键松开就又还原了对吧。我要实现的是,按键每按一次,LED的状态变化一次
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-10-11 14:34:47 | 显示全部楼层

回复:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

回复第 5 楼 于2011-10-11 04:25:34发表:
一般read GPIO的状态时要设置成input模式,,否则读出来的不一定准。所以最好是用一个变量记录GPIO的状态,根据次变量去改变状态。。 

 
 
那是不是用库函数操作的时候,无法做到直接取反?
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-10-11 14:43:17 | 显示全部楼层

RE:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

可以,通过GPIO-BSRR,和BRR来控制。
回复 支持 反对

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-10-11 21:15:41 | 显示全部楼层

RE:【求助】用库函数操作GPIO时,GPIO某个位的取反怎么做?

最好是用变量记录LED的状态,然后再在按下时根据变量的值取反控制,。
每次按键按下的时候去读LED的状态也可以,但不一定读的准。。
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2020-2-8
发表于 2020-2-5 19:30:14 | 显示全部楼层
GPIO_ToggleBits(GPIOx, GPIO_Pin_x);
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版