STM32单片机外接扩展板D2、D3接开关S2和S3,编程实现对按键进行循环加、减计数00-59。S1实现加1,S2实现减1,每次按下按键,计得当前值在串口上面显示。STM32CUBEMX配置过程

时间: 2024-02-17 21:04:36 浏览: 31
这是一个关于STM32单片机外接扩展板D2、D3接开关S2和S3,编程实现对按键进行循环加、减计数00-59的问题,同时要求每次按下按键,计得当前值在串口上面显示。下面是STM32CUBEMX的配置过程: 1. 打开STM32CUBEMX软件,新建一个工程,并选择适合你的芯片型号。 2. 在Pinout & Configuration选项卡中,将D2和D3引脚的模式设置为GPIO Input,同时启用内部上拉电阻。 3. 在中断和时钟选项卡中,启用外部中断,并分别与S2和S3按键的引脚相关联。 4. 在Project Manager选项卡中,生成代码并打开工程。 5. 打开main.c文件,在MX_GPIO_Init()函数中添加以下代码,初始化S1按键引脚并设置为输入模式: ``` GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin : PA0 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 6. 在main函数中添加以下代码,实现按键计数和串口输出: ``` uint8_t count = 0; char buf[10]; while (1) { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) // 检测S1按键是否按下 { count++; // 计数器加1 if (count > 59) count = 0; // 循环计数 sprintf(buf, "%02d", count); // 格式化输出 HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 0xFFFF); // 串口输出 HAL_Delay(200); // 延时一段时间,防止按键抖动 } else if (HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_2) == GPIO_PIN_RESET) // 检测S2按键是否按下 { count--; // 计数器减1 if (count < 0) count = 59; // 循环计数 sprintf(buf, "%02d", count); // 格式化输出 HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 0xFFFF); // 串口输出 HAL_Delay(200); // 延时一段时间,防止按键抖动 } else if (HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_3) == GPIO_PIN_RESET) // 检测S3按键是否按下 { count = 0; // 计数器清零 sprintf(buf, "%02d", count); // 格式化输出 HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 0xFFFF); // 串口输出 HAL_Delay(200); // 延时一段时间,防止按键抖动 } } ``` 7. 最后编译程序并下载到STM32单片机中,即可测试程序是否正常工作。 希望以上步骤可以帮助到你!

相关推荐

最新推荐

recommend-type

单片机与DSP中的基于STM32的传统USB 2.0接口到Type-C的转换方案

 我们知道,STM32芯片大多数型号都带USB DEVICE或USB OTG模块,随着Type-C接口的不断推广与普及,STM32芯片的USB模块如何与Type-C接口连接的问题,自然会逐渐出现在STM32应用工程师的面前。  ST官方有个应用笔记...
recommend-type

基于STM32单片机流水灯仿真与程序设计

本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和熄灭;通过配置8位流水灯程序设计,实现灯的流水实现。 关键字:Proteus、keil、...
recommend-type

FPGA作为从机与STM32进行SPI协议通信---Verilog实现

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供...
recommend-type

STM32 按键检测程序

PA13 PA15 是JTAG的引脚。 所以JTAG 插上 模拟时候,不准去的。 只有调到SWD 模式 PA15 才能用。 PA13是SWDIO PA14 SWCLK 复用时候一定要注意。实验结果: DS0 交替闪烁 当按下KEY1 时候 DS1亮。...
recommend-type

在STM32上通过UART+DMA实现One-Wire总线

One-wire总线使用一根并联总线完成对于多个设备的访问,通过上拉的OD门实现多设备的读写操作,通过ID区别设备,通过CRC5完成数据校验。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。