cortex m0航顺HK32F030M之GPIO初始化
特别注意:GPIO口初始化之后要延时一下再进行操作,否则可能不成功。
MCU写完程序后,最好断电再上电运行程序,有时候仅仅复位程序不运行。
void xxGpioInit(void)
{
GPIO_InitTypeDef m_gpio; //定义一个GPIO的结构体
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); //开启GPIOC 的时钟,可以改成需要的端口号,有A,B,C,D,CRC,SRAM
m_gpio.GPIO_Mode = GPIO_Mode_OUT; //模式,有输入GPIO_Mode_IN,有输出GPIO_Mode_OUT,有辅助功能模式GPIO_Mode_AF,模拟量GPIO_Mode_AN
m_gpio.GPIO_OType = GPIO_OType_PP; //输出引脚的内部连接类型,GPIO_OType_PP推挽模式,GPIO_OType_OD开漏模式
m_gpio.GPIO_Pin = GPIO_Pin_7; //要设置的GPIO引脚号码,可以是硬件有的号码,也可以提前宏定义,在这用别名也不错
m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL; //上下拉设置,输出模式设置为GPIO_PuPd_NOPULL,1高电平0低电平,输入模式GPIO_PuPd_UP上拉,GPIO_PuPd_DOWN下拉
m_gpio.GPIO_Speed = GPIO_Speed_10MHz; //工作速度,低速模式GPIO_Speed_Level_1是2MHZ,正常模式GPIO_Speed_Level_2是10MHZ
GPIO_Init(GPIOC, &m_gpio); //调用初始化函数,指定端口号和前面定义的结构体名,初始化之后就可以使用GPIO口
}
GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); //端口置位1
GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); //端口复位0