在STM32中,比如对GPIOA的某几个引脚进行操作,请问该用什么函数?谢谢。

2025-03-25 01:01:26
推荐回答(2个)
回答1:

用库时,这样 GPIO_SetBits(GPIOA,GPIO_Pin_0) \\PA0 = 1
GPIO_ResetBits(GPIOA,GPIO_Pin_0) \\PA0 = 0

是不是很简单,如果你还要更简单的用它,做成宏定义如下

#define PA0(a) if (a) \
GPIO_SetBits(GPIOA,GPIO_Pin_0);\
else \
GPIO_ResetBits(GPIOA,GPIO_Pin_0)

用的时候这样
PA0(1) //PA0 = 1
PA0(0) //PA0 = 0

如果你在上面再加个这样的宏定义
#define ON 0
#define OFF 1

用的时候这样
PA0(OFF) //PA0 = 1
PA0(ON) //PA0 = 0

你看这样的程序都直观!!!

再加个初始化 GPIOA口的代码
void LED_GPIO_Config(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启GPIOC的外设时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
/*选择要控制的GPIOA引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4 | GPIO_Pin_5;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数,初始化GPIOA*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

回答2:

查看用户手册,里面有GPIO的初始化函数GPIO_init