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

STM32F7 GPIO同时控制?

[复制链接]
Rareyee 提问时间:2018-3-14 10:48 /
本帖最后由 Rareyee 于 2018-3-14 11:12 编辑

GPIOD->ODR 0-8和9-15管脚同时控制
下面程序的时候0-8有波形 但写GPIOD->ODR|=2*i + 16*j; 9-15有波形 0-8就无输出了

for(i=0;i<(Capture_Line/16);i++)//12个使能  (Capture_Line/16) 行片选
                {
                        
                        for(j=0;j<16;j++)  //16*(Capture_Line/16) =192行   16个地址      
                        {
                                GPIOD->ODR =2*i + 16*j;

收藏 评论8 发布时间:2018-3-14 10:48

举报

8个回答
琦子 回答时间:2018-3-14 10:53:54
GPIOD->ODR =2*i + 16*j; 楼主 这是你写的代码 但是你又说GPIOD->ODR|=2*i + 16*j
那么到底是赋值还是或值呢

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Rareyee 回答时间:2018-3-14 11:11:46
bargagebaobei 发表于 2018-3-14 10:53
GPIOD->ODR =2*i + 16*j; 楼主 这是你写的代码 但是你又说GPIOD->ODR|=2*i + 16*j
那么到底是赋值还是或值 ...

赋值  但需要和GPIO9-15的口不影响
琦子 回答时间:2018-3-14 11:14:37
楼主你要是这样赋值的话 就是意味着在同一时间只有一个io口是被置位的 其余io口都被复位了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

废鱼 回答时间:2018-3-14 11:15:34
那应该是
GPIOD->ODR=(GPIOD->ODR & 0xFF00) | (2*i + 16*j);

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

琦子 回答时间:2018-3-14 11:17:53
那要看楼主你的目的是什么 如果你想要就是同一个时间只有指定io口输出高电平 那么就用GPIOD->ODR =2*i + 16*j;,那么如果你想要在原来基础上再增加指定的io口输出高电平 那么就用GPIOD->ODR|=2*i + 16*j
wenyangzeng 回答时间:2018-3-14 11:33:29
本帖最后由 wenyangzeng 于 2018-3-14 12:38 编辑

楼主应该补习一下布尔代数了。

1、GPIOD->ODR|=
等号后面的值应该用一个运算过的变量来表达。
况且“ |=”运算如果原来某位为1,就保持不变。所以要或运算,应该先进行与运算,清零该位。

2、(Capture_Line/16) =192行   16个地址
STM32最多16位IO口,如何一次进行192的或运算?

评分

参与人数 2ST金币 +2 蝴蝶豆 +3 收起 理由
zero99 + 3
MrJiu + 2 很给力!

查看全部评分

butterflyspring 回答时间:2018-3-14 11:42:41
这个问题,有两方面
首先:建议你用一个uint32_t xx = 2*i + 16*j;作为一个缓存,因为我不知道你的i是什么类型,如果是8位,我没看到有类型的强制转换呀...那会爆了呀.然后也可以通过xx看看你计算的值是什么,对比一下结果.查看无误了,再恢复成你现在的形式也型.
其次:你可以直接调试状态下,控制ODR寄存器,看看硬件输出是否正常...
最后.......如无意外......就可以下班了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-3-14 13:06:32
楼主,你想怎么搞?想0到15一起赋值呢,还是0到8赋值不影响8到15,或9到15赋值不影响0到8呢?
体会一下,下面这两条
GPIOD->ODR = (GPIOD->ODR & 0xFE00) | (a & 0x1FF);
GPIOD->ODR = (GPIOD->ODR & 0x01FF) | (b & 0xFE00);

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版