1.void XXX_StructInit(XXX_InitTypeDef* XXX_InitStruct)函数功能是将结构体XXX_InitStruct中的参数设置为默认值;
2.void XXX_Init(XXX_InitTypeDef* XXX_InitStruct) 功能是将结构体XXX_InitStruct中的参数设置到Register中;
3.通过观察发现XXX_InitStruct需要设置的参数,都可以在函数
void XXX_StructInit(XXX_InitTypeDef* XXX_InitStruct)中找到,这样可以快速的知道XXX功能哪些参数需要设置.
例如 GPIO设置
/**
* @brief Fills each GPIO_InitStruct member with its default value.
* @param GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will be initialized.
* @retval None
*/
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
/* Reset GPIO init structure parameters values */
GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All;
GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;
}
void MyInitGpio(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOA, ENABLE);
// 下面这些参数都可以在GPIO_StructInit中找到 ============================
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
Just For Fun!!!