使用STM32F103RC单片机在keil5中实现使用5向按键点亮5种LED灯并写出main.c阶段的代码
时间: 2024-03-23 20:39:54 浏览: 120
好的,下面是实现使用STM32F103RC单片机在keil5中使用5向按键点亮5种LED灯的main.c代码:
```c
#include "stm32f10x.h" //包含STM32F10x系列单片机头文件
int main(void)
{
//初始化按键引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4; //PA0~PA4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置为上拉输入模式
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
//初始化LED引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; //PB0~PB4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO输出速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) //判断PA0是否按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_0); //点亮PB0
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0); //熄灭PB0
}
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0) //判断PA1是否按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_1); //点亮PB1
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_1); //熄灭PB1
}
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 0) //判断PA2是否按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_10); //点亮PB10
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_10); //熄灭PB10
}
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 0) //判断PA3是否按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_11); //点亮PB11
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_11); //熄灭PB11
}
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4) == 0) //判断PA4是否按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_12); //点亮PB12
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //熄灭PB12
}
}
}
```
在这个代码中,我们使用了GPIOA0~GPIOA4作为按键的输入引脚,GPIOB0~GPIOB4作为LED的输出引脚。当按下按键时,对应的LED灯会点亮,松开按键后该LED灯就会熄灭。程序会一直循环执行,以便不断地检测按键的状态并控制LED灯的亮灭。
阅读全文