0~99按键计数显示实例STM32F103R6
时间: 2023-10-24 10:05:59 浏览: 218
下面是一个简单的按键计数显示实例,使用STM32F103R6微控制器。
首先,我们需要定义一些GPIO引脚来连接按键和LED灯。我们将使用PA0作为按键输入,PB0-PB7作为LED输出。
```c
#define KEY_PIN GPIO_PIN_0
#define KEY_PORT GPIOA
#define LED_PORT GPIOB
#define LED_PIN_0 GPIO_PIN_0
#define LED_PIN_1 GPIO_PIN_1
#define LED_PIN_2 GPIO_PIN_2
#define LED_PIN_3 GPIO_PIN_3
#define LED_PIN_4 GPIO_PIN_4
#define LED_PIN_5 GPIO_PIN_5
#define LED_PIN_6 GPIO_PIN_6
#define LED_PIN_7 GPIO_PIN_7
```
接下来,我们需要初始化这些GPIO引脚。我们将PA0配置为输入模式,PB0-PB7配置为推挽输出模式。
```c
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 初始化按键引脚
GPIO_InitStruct.Pin = KEY_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(KEY_PORT, &GPIO_InitStruct);
// 初始化LED引脚
GPIO_InitStruct.Pin = LED_PIN_0 | LED_PIN_1 | LED_PIN_2 | LED_PIN_3 | LED_PIN_4 | LED_PIN_5 | LED_PIN_6 | LED_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
```
接下来,我们需要编写主要的代码来处理按键输入并控制LED输出。我们将使用一个全局变量来保存按键计数。每次按下按键时,计数器将增加1,并将计数器的值显示在LED上。
```c
uint8_t count = 0;
while (1)
{
// 检查按键是否按下
if (HAL_GPIO_ReadPin(KEY_PORT, KEY_PIN) == GPIO_PIN_RESET)
{
// 增加计数器
count++;
// 显示计数器值
HAL_GPIO_WritePin(LED_PORT, LED_PIN_0, count & 0x01);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_1, count & 0x02);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_2, count & 0x04);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_3, count & 0x08);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_4, count & 0x10);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_5, count & 0x20);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_6, count & 0x40);
HAL_GPIO_WritePin(LED_PORT, LED_PIN_7, count & 0x80);
// 等待按键释放
while (HAL_GPIO_ReadPin(KEY_PORT, KEY_PIN) == GPIO_PIN_RESET);
}
}
```
这个简单的例子演示了如何使用STM32F103R6微控制器来处理按键输入和控制LED输出。
阅读全文
相关推荐


















