写以下的代码:开发板上电复位后显示0,按下K3显示数据加1,按下K4数据显示减1,当计数小于0时显示0,大于9时,显示9。
时间: 2023-05-23 14:06:16 浏览: 142
```c
#include "stm32f4xx.h"
int main(void)
{
// 初始化GPIOG时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
// 配置PG6, PG8, PG9为输入模式,PG13为输出模式
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOG, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOG, &GPIO_InitStruct);
// 初始化计数器变量和显示的数字
int count = 0;
int displayNum = 0;
// 无限循环
while (1)
{
// 检查是否按下K3
if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_6) == RESET)
{
count++;
}
// 检查是否按下K4
if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_8) == RESET)
{
count--;
}
// 限制count的范围为0到9
if (count < 0)
{
count = 0;
}
else if (count > 9)
{
count = 9;
}
// 如果计数器发生变化,更新显示的数字
if (count != displayNum)
{
displayNum = count;
GPIO_WriteBit(GPIOG, GPIO_Pin_13, (count & 0x01)); // 最低位控制LED
GPIO_WriteBit(GPIOG, GPIO_Pin_14, (count & 0x02) >> 1); // 次低位控制LED
GPIO_WriteBit(GPIOG, GPIO_Pin_15, (count & 0x04) >> 2); // 次高位控制LED
GPIO_WriteBit(GPIOE, GPIO_Pin_7, (count & 0x08) >> 3); // 最高位控制LED
}
}
}
```
阅读全文