问题一:配置GPIO的步骤
现在做一个最简单的GPIO控制LED的 GPIO初始化
(1)初始化结构体
GPIO_InitTypeDef GPIO_InitStructure;
(2)使能相应的时钟(程序最初应该有#define RCC_GPIO_LED GPIOB 或其他组端口)
RCC_APB2PeriphClockCmd(RCC_GPIO_LED , ENABLE);
(3)对GPIO结构体初始化。
GPIO结构体:
typedef struct
{
uint16_t GPIO_Pin; //选择管脚,是你想用到的管脚
GPIOSpeed_TypeDef GPIO_Speed; //选择速度 可选2M 10M 50M
GPIOMode_TypeDef GPIO_Mode; //输入输出的8种模式,这要根据外电路和作用选择
}GPIO_InitTypeDef;
/* LEDs pins configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_LED_ALL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //LED 一般就选推挽输出了
GPIO_Init(GPIO_LED, &GPIO_InitStructure);
问题二: 什么时候用 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;中IPU是指IO口的工作模式是带上拉输入,这个和具体的电路有关,总之如果选择某个IO口作为外部中断的触发信号,就必须配置这个IO口为输入模式,不然无法触发中断