配置时钟
配置RCC开启时钟, 将所需要的外设时钟打开, 效果类似供电.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
配置GPIO初始化
配置GPIO的结构体
GPIO结构体分为了四个部件, 如下所示.
typedef struct
{
uint16_t GPIO_Pin; //引脚标号, 想要使用的引脚, 可以同时定义多个用按位或"|"来连接
GPIOSpeed_TypeDef GPIO_Speed; //引脚速度, 设置最高, 速度越快响应越快, 延迟越低
GPIOMode_TypeDef GPIO_Mode; //引脚模式最为重要
}GPIO_InitTypeDef;
引脚的模式很重要, 在不同的情况下使用不同的模式, 还与硬件电路有关.
typedef enum
{ GPIO_Mode_AIN = 0x0, //不用管,应该是空闲,数据手册也没写
GPIO_Mode_IN_FLOATING = 0x04, //浮空输入, 引脚电平未知, 容易受到静电干扰.
GPIO_Mode_IPD = 0x28, //下拉输入, 引脚被强下拉
GPIO_Mode_IPU = 0x48, //上拉输入,
GPIO_Mode_Out_OD = 0x14, //开漏输出
GPIO_Mode_Out_PP = 0x10, //推挽输出
GPIO_Mode_AF_OD = 0x1C, //复用开漏输出
GPIO_Mode_AF_PP = 0x18 //复用推挽输出
}GPIOMode_TypeDef;
调用初始化函数
GPIO_Init(GPIOA, &GPIO_InitStructure);
LED灯闪烁主循环
任务目标为LED灯闪烁, 查找外设GPIO库函数, 使用写入操作即可.
while (1)
{
Delay_ms(1000);
GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_RESET);
Delay_ms(1000);
GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_SET);
}
saleae逻辑分析仪查看