GPIO的对某一位进行写操作,下面是我用GPIO_SetBits,GPIO_ResetBits对位进行操作的,请问怎么简化?

2025年03月24日 22:59
有2个网友回答
网友(1):

GPIO的对某一位进行写操作,同常使用GPIO_SetBits,GPIO_ResetBits对位进行操作,但也可以像51的C语言一样简化。下面是示例:

#define LED PBout(9) // PB9 LED
#define SDAT PBout(1) // 数据线
#define RST PBout(5) // 复位控制
#define RS PAout(7) // 串口片选
#define SCK1 PBout(0) // 上半屏时钟
#define SCK2 PAout(5) // 下半屏时钟

GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|
RCC_APB2Periph_GPIOB,ENABLE); //使能PA,PB,PD端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1 //管脚选择,PB0.1.5.9
|GPIO_Pin_5|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化PB口
SCK1 = 0; // 上半屏时钟
RST = 1; // 复位控制,低有效
LED = 1;

网友(2):

直接是用数组例如 u16 ww[]={0x80,,,,,,}
使用循环进行赋值操作GPIOE->ODR =ww[i]
或者是先使用或运算,然后与操作也行的