我参考官方的api,自己写了 一个时钟使能的函数。
/*
*********************************************************************************************************
*函数名:GPIO_CLK_CTL
*功能说明:初始化CLK时钟
*形参:GPIOx:代表某组管脚,NewState:代表是否使能
*返回值:无
*********************************************************************************************************
*/
void GPIO_CLK_CTL(GPIO_SFRmap* GPIOx, FunctionalState NewState)
{
/* 参数校验 */
CHECK_RESTRICTION(CHECK_GPIO_ALL_PERIPH(GPIOx));
if (GPIOx == GPIOA_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOACLKEN, NewState);
}
else if (GPIOx == GPIOB_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOBCLKEN, NewState);
}
else if (GPIOx == GPIOC_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOCCLKEN, NewState);
}
else if (GPIOx == GPIOD_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIODCLKEN, NewState);
}
else if (GPIOx == GPIOE_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOECLKEN, NewState);
}
else if (GPIOx == GPIOF_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOFCLKEN, NewState);
}
else if (GPIOx == GPIOG_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOGCLKEN, NewState);
}
else if (GPIOx == GPIOH_SFR)
{
PCLK_CTL0_Peripheral_Clock_Enable(PCLK_CTL0_GPIOHCLKEN, NewState);
}
else
{
;
}
}
你把替换成我的这个GPIO_CLK_CTL(GPIOx,ENABLE);
应该就可以了。 |
IO的时钟在芯片上电时就默认开启, 所以只是普通的IO操作, 可以不用关注时钟. GPIO_Reset()这个函数不需要调用.