13、使用库函数点亮第一个LED
1.LED模块硬件电路
2.GPIO库函数介绍
3.GPIO初始化步骤
4.使用库函数编写点亮LED程序
1.LED模块硬件电路
![](https://i-blog.csdnimg.cn/blog_migrate/dbd11b5449a7b8248e22ebbe9f4fe9d7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0686c8e10d235ff8f03678d5cf6c8427.png)
2.GPIO库函数介绍
(1)GPIO外设的库文件:
stm32f10x_gpio.c
stm32f10x_gpio.h
(2)GPIO常用库函数
<1>初始化函数void GPIO_Init(GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)
打开库函数工程模板进行讲解。
初始化范例:
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //选择你要设置的IO口 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置推挽输出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率 GPIO_Init(GPIOC,&GPIO_InitStructure);/* 初始化GPIO */
可以一次对多个管脚进行初始化,前提必须是它们的配置模式需一样。
比如:
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
<2>设置管脚输出电平函数
功能:设置某个IO口为高电平(可同时设置同一端口的多个IO)。底层
是通过配置BSRR寄存器。
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
是通过配置BSRR寄存器。
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
是通过配置BSRR寄存器。
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
<3>读取管脚输入电平函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t
GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
<4>读取管脚输出电平函数
功能:读取端口中的某个管脚输出电平。底层是通过读取ODR寄存器。
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t
GPIO_Pin);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
(3)使能GPIO时钟函数
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
使能GPIOC端口时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE)
3.GPIO初始化步骤
(1)使能对应的GPIO端口时钟(2)初始化GPIO
4.使用库函数编写点亮LED程序
本章所要实现的功能是:点亮D1指示灯。程序框架如下:
(1)LED初始化
(2)点亮D1指示灯
作业:
(1)使用工程模板点亮LED2。(2)实现LED闪烁效果。
(3)实现LED流水灯效果。
以上具体输出函数可任意使用 。