OpenEdv-开源电子网

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

关于oled例程,GPIOC的引脚全被操作了么

[复制链接]

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
发表于 2018-12-6 12:54:22 | 显示全部楼层 |阅读模式
10金钱
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  GPIOx->ODR = PortVal;
}
除了PC0~7,剩下的引脚也被操作,是不是用了oled,别的引脚就不能用了

最佳答案

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

现解决: uint16_t portval; void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal) { /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); GPIOC->ODR&=~(0XFFODR=portval; }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-6 12:54:23 | 显示全部楼层
现解决:
uint16_t portval;
void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  GPIOC->ODR&=~(0XFF<<0);                //&#199;&#229;&#191;&#213;0~7
        portval=GPIOC->ODR;
        portval|=PortVal;
        GPIOC->ODR=portval;
}
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-6 13:10:13 | 显示全部楼层
GPIOx->ODR = PortVal;你可以用这个直接操作你想操作的引脚,其他的引脚不改变它的状态即可
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-6 13:43:38 | 显示全部楼层
szczyb1314 发表于 2018-12-6 13:10
GPIOx->ODR = PortVal;你可以用这个直接操作你想操作的引脚,其他的引脚不改变它的状态即可

运行GPIO_WRITE这个函数后,C的引脚都被操作了
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-6 13:50:26 | 显示全部楼层
MonkeyD路飞 发表于 2018-12-6 13:43
运行GPIO_WRITE这个函数后,C的引脚都被操作了

GPIOC->ODR |= 0X0001;//置高C1
GPIOC->ODR&=(~0X0001);//置低C1
按照这样子去操作端口
GPIOC->ODR |= 0X00FF;//拉高C0-C7,C8-C15不改变状态啊
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-7 15:38:49 | 显示全部楼层
MonkeyD路飞 发表于 2018-12-6 12:54
现解决:
uint16_t portval;
void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal)

多次一举,直接操作有啥影响吗?
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

43

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-4-21
在线时间
262 小时
 楼主| 发表于 2018-12-8 10:24:31 | 显示全部楼层
szczyb1314 发表于 2018-12-7 15:38
多次一举,直接操作有啥影响吗?

直接操作8-15就被拉低了
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-9 17:49:22 来自手机 | 显示全部楼层
说了用异或的操作,你用直接赋值的方式当然拉低8-15了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 13:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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