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

查看: 15865|回复: 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版