在STM32中,比如对GPIOA的某几个引脚进行操作,请问该用什么函数?谢谢。
2个回答
展开全部
用库时,这样 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);
}
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);
}
2014-03-20
展开全部
查看用户手册,里面有GPIO的初始化函数GPIO_init
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询