使用stm32f103rc芯片5向按键怎么点亮5种LED灯keil5
时间: 2024-03-23 14:39:38 浏览: 65
按键与LED灯.rar_STM32F103_double5sq_led与stm
对于 STM32F103RC 芯片,它也有 5个 GPIO 引脚可以用控制 5 LED 灯和 5 向键。以下是这引脚的对应关系:
| 按键/LED | 引脚 | 端口 |
| -------- | ---- | ---- |
| SEL | PB12 | GPIOB |
| UP | PB13 | GPIOB |
| DOWN | PB14 | GPIOB |
| LEFT | PB15 | GPIOB |
| RIGHT | PA8 | GPIOA |
| LED1 | PC13 | GPIOC |
| LED2 | PC14 | GPIOC |
| LED3 | PC15 | GPIOC |
| LED4 | PB5 | GPIOB |
| LED5 | PB6 | GPIOB |
接下来,在 Keil5 中编写程序,使用 GPIO 库来控制这些引脚和端口。下面是一个示例程序:
```c
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
int main(void)
{
// 初始化 GPIO
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 循环处理
while (1)
{
// 检测按键状态
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8) == 1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_12);
}
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 0)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)
{
GPIO_SetBits(GPIOC, GPIO_Pin_14);
}
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15) == 0)
{
GPIO_SetBits(GPIOC, GPIO_Pin_15);
}
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8) == 0)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
// 控制 LED 灯状态
GPIO_SetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_12);
GPIO_SetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
Delay(1000);
GPIO_ResetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_12);
GPIO_ResetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
Delay(1000);
}
}
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
```
这个程序会循环检测 5 向按键的状态,并根据按键的状态点亮相应的 LED 灯。同时,它还会控制 5 个 LED 灯不断地闪烁。你可以根据需要修改程序来实现你想要的功能。
阅读全文