跑马灯其实就是控制两个LED端口的电平,低电平有效,高电平灭(因为电阻加压的关系)。
32的每个IO端口都有7个寄存器
1、2个32位端口配置寄存器CRL和CRH
2、2个32位数据寄存器IDR和ODR
3、1个32位置位、复位寄存器BSRR
4、1个16位复位寄存器BRR
5、1个32位锁寄存器LCKR
首先IO口的输入输出是有8种模式的,通过CRL CRH配置控制
那么初始化IO口的方式就是通过GPIO_init函数,
eg:
首先做一个结构体
GPIO_InitTypeDef GPIO_initStructure
设置结构体里面的端口,输出模式,速度
GPIO_initStructure.GPIO_PIN=GPIO_PIN_5;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz
最后用Init设置GPIO
GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数配置 根据设定参数配置 根据设定参数配置 GPIO
初始化完成IO口以后,我们就要进行高低电平的设置了。
使用SetBits和ResetBits设置高低电平输出(本质上是更改BSRR和BRR)
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
使用函数