社区导航

 
查看: 350|回复: 7

[求助] 帮忙解释两句程序,关于IO口的

[复制链接]

268

TA的帖子

3

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-7-12 15:53:40 | 显示全部楼层 |阅读模式
帮忙解释两句程序,关于IO口的。作为小白,用stm32的时候一直用的是库函数,所以遇到这两句就蒙圈了,快来一波大神砸死我吧~

1. GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;
2. GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=1<<9*2;


此帖出自stm32/stm8论坛


回复

使用道具 举报

350

TA的帖子

5

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2018-7-12 16:24:44 | 显示全部楼层
就是对寄存器的某位置1或清零啊,自己算一下那个移位操作的值,然后对照手册就查出来了


回复

使用道具 举报

3492

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-7-16 19:24:17 | 显示全部楼层
就是普通的操作寄存器语句。c语言基础好好看看。在看看对应寄存器那些位的含义。就明白了。

点评

嗯,宝宝看明白啦,多谢  详情 回复 发表于 2018-7-18 16:27


回复

使用道具 举报

268

TA的帖子

3

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-7-18 16:27:11 | 显示全部楼层
ienglgge 发表于 2018-7-16 19:24
就是普通的操作寄存器语句。c语言基础好好看看。在看看对应寄存器那些位的含义。就明白了。

嗯,宝宝看明白啦,多谢


回复

使用道具 举报

3236

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-7-20 00:19:59 | 显示全部楼层
GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;
这么写主要是为了方便对应,3代表2位操作,9代表第九组,2代表每组两位
&非清0,| 置位
这种逻辑操作很多,主要目的是不影响其它无关位

点评

为什么 stm32F405中,操作第15个端口像下面这样写就提示超出范围? GPIOG->MODER&=~(3  详情 回复 发表于 2018-7-20 08:39


回复

使用道具 举报

268

TA的帖子

3

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-7-20 08:39:08 | 显示全部楼层

为什么 stm32F405中,操作第15个端口像下面这样写就提示超出范围?
GPIOG->MODER&=~(3<<(15*2));GPIOG->MODER|=0<<15*2;


回复

使用道具 举报

32

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 7 天前 | 显示全部楼层
个端口像下面这样写就提示超出范围?
GPIOG->MODER&=~(3<<(15*2));GPIOG->MODER|=0<<15*2;

点评

是的,提示超出范围,不知道为什么  详情 回复 发表于 5 天前


回复

使用道具 举报

268

TA的帖子

3

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 5 天前 | 显示全部楼层
DSCX05 发表于 2018-9-13 10:58
个端口像下面这样写就提示超出范围?
GPIOG->MODER&=~(3

是的,提示超出范围,不知道为什么


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-9-20 09:24 , Processed in 0.226962 second(s), 16 queries , Gzip On, Redis On.

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