STM32F4函数分析
GPIO_ID_Init函数原理分析
/**************************************************************
*功能:GPIO(F/G/A/B/C/D/E)端口初始化
*参数:无
*返回值:无
**************************************************************/
void GPIO_ID_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); //使能要调用的端口时钟,此处以GPIOG PORTG端口举例
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|
GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //普通输入模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //设置成上拉输入
GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化GPIOG0...7(即PG0~PG7管脚)
}
以上为基本函数模块。
GPIO_InitTypeDef //基本定义
GPIO_InitStructure; //调用结构体库函数
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
/*此处为给使能信号ENABLE
RCC_AHB1Periph_GPIOG为需要给使能的端口,类似可以换为GPIOF/GPIOA/GPIOE等等
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|
GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
/*又臭又长 简单来说就是自己选择需要使用作为确定ID号端口,把想用做确定ID号的端口都或起来,或后的值作为ID号使用*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
/*Mode为需要使用的模式*/
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
/*PUPD依然为模式设置,具体设置按需要进行*/
GPIO_Init(GPIOG, &GPIO_InitStructure);
/*初始化GPIOG0...7(即PG0~PG7管脚),Init为定义函数,简单来说就是初始化要引用的管脚*/
以上为庞大的库函数中一个具体函数的分析,仅仅为一小部分,具体模式设置需要查阅库函数文档