一、STM32中的跑马灯实验总结
1、GPIO的4种输入模式和4种输出模式,以及3中最大输出速度:
输入浮空 推挽输出 2MHz
输入上拉 推挽复用输出 10MHz
输入下拉 开漏输出 50MHz
模拟输入 开漏复用功能
2、点亮LED指示灯的GPIO一般采用 推挽输出 (可以输出高低电平) ;不采用开漏输出(只可以输出地电平)。
0805封装 LED指示灯,一般额定电流20mA。在实际使用中基本都是5-8MA最保险,寿命最长。所以限流电阻采用510欧。
3、GPIO_Init函数
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
GPIO_TypeDef* GPIOx ---------- 查看函数有效性assert_param(IS_GPIO_ALL_PERIPH(GPIOx));可知道 GPIOx的有效性为一下函数: #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
((PERIPH) == GPIOB) || \
((PERIPH) == GPIOC) || \
((PERIPH) == GPIOD) || \
((PERIPH) == GPIOE) || \
((PERIPH) == GPIOF) || \
((PERIPH) == GPIOG))
GPIO_InitTypeDef* GPIO_InitStruct ---------- 查看函数
typedef struct
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
三个条件 1、GPIO端口 2、端口速度 3、端口模式
可以继续---------- 查看函数有效性assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
4、GPIO_SetBits(GPIOA,GPIO_Pin_8); 等函数以此类推。
5、函数流程
l 使能IO口时钟。调用函数RCC_APB2PeriphColckCmd();
不同的IO组,调用的时钟使能函数不一样。
l 初始化IO口模式。调用函数GPIO_Init();
l 操作IO口,输出高低电平。
GPIO_SetBits();
GPIO_ResetBits();