stm32实现按键控制led灯,加详细注释
时间: 2023-06-02 08:02:02 浏览: 241
下面是一份基于STM32的按键控制LED灯的代码,附有详细注释:
```c
#include "stm32f10x.h" // 包含STM32F10x系列芯片的头文件
void GPIO_Configuration(void); // GPIO口配置函数
void delay(uint32_t nCount); // 延时函数
int main(void)
{
GPIO_Configuration(); // 调用GPIO口配置函数
while(1) // 进入主循环
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET) // 如果按键按下
{
GPIO_SetBits(GPIOC, GPIO_Pin_13); // 点亮LED灯
delay(1000000); // 延时
}
else // 如果按键未按下
{
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 熄灭LED灯
}
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; // 定义GPIO初始化结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE); // 使能GPIOA、GPIOC时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 配置GPIOA的0号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 配置为输入模式,带上拉
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // 配置GPIOC的13号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 配置为输出模式,推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 配置GPIO速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); // 初始化GPIOC
}
void delay(uint32_t nCount) // 延时函数
{
for(; nCount != 0; nCount--);
}
```
注释解释:
1. 引入STM32F10x系列芯片的头文件
2. 定义GPIO口配置函数
3. 定义延时函数
4. 进入主函数
5. 调用GPIO口配置函数
6. 进入主循环
7. 判断按键是否按下
8. 如果按键按下,则点亮LED灯并延时
9. 如果按键未按下,则熄灭LED灯
10. GPIO口配置函数
11. 定义GPIO初始化结构体
12. 使能GPIOA、GPIOC时钟
13. 配置GPIOA的0号引脚为输入模式,带上拉
14. 初始化GPIOA
15. 配置GPIOC的13号引脚为输出模式,推挽输出,并设置GPIO速度为50MHz
16. 初始化GPIOC
17. 延时函数
18. 循环nCount次,实现延时效果
阅读全文