STM32F7 GPIOD分开控制
GPIOD口的0-6用在译码器上输出单个脉冲循环 原理图上GPIO0空了 就用了GPIO1-6 u8 i,j;for(i=0;i<3;i++) //译码器的片选
{
for(j=0;j<16;j++)
{
GPIOD->ODR =2*i + 16*j;
delay_us(100);
}
GPIO9-15另外单独控制如何写不受影响
试了下GPIOD->ODR=(GPIOD->ODR & 0xFE00) | (i + 16*j);译码器有些管脚就无输出
楼主从你的代码分析,你操作的是P0-P15,但是你的P9-P15又是不变的。 首先 for(j=0;j<16;j++) 这个循环不对 你是想0-6还是想1-6 请楼主写清楚
其次 单独控制可以让引脚与xxxxxxx111111111B进行或运算 寄存器操作,建议用原子操作的寄存器。。。那个更好用。。。。BSRR和BRR,当然了,F7叫法可能不一样,但是效果是一样的。。。。 本帖最后由 toofree 于 2018-3-15 11:46 编辑
怎么感觉你用两个号在问同一个问题呢
https://www.stmcu.org.cn/module/foru ... 8355&fromuid=307297
GPIOD->ODR = (GPIOD->ODR & 0xFE00) | (a & 0x1FF);
GPIOD->ODR = (GPIOD->ODR & 0x01FF) | (b & 0xFE00);
toofree 发表于 2018-3-15 11:44
怎么感觉你用两个号在问同一个问题呢
https://www.stmcu.org.cn/module/foru ... 8355&fromuid=307297
问题是一样的问题,人不是同一个人啦 本帖最后由 xmstudio 于 2018-3-15 17:03 编辑
STM32应该都有BSRR这个寄存器吧,低16位置1代表将对应IO口置1,高16位置1代表将对应的IO口置0,其他IO口不变
页:
[1]