当前位置: 首页 > news >正文

STM32HAL-最简单的长、短、多击按键框架(多按键)

概述 
       本文章使用最简单的写法实现长、短、多击按键框架,非常适合移植各类型单片机,特别是资源少的芯片上。接下来将在stm32单片机上实现,只需占用1个定时器作为时钟扫描按键即可。

一、开发环境
1、硬件平台
     STM32F401CEU6
     内部Flash : 512Kbytes,SARM : 96 Kbytes

二、STM32CubeMx配置
 2.1、系统时钟配置

2.2、下载调试配置

2.3、TIM配置(1ms中断)

2.4、usart1配置

2.5、gpio中断线

2.6、生成代码

2.7、编译工程

三、编码 
1、usart.c添加打印

/* USER CODE BEGIN Header */
/********************************************************************************* @file    usart.c* @brief   This file provides code for the configuration*          of the USART instances.******************************************************************************* @attention** Copyright (c) 2023 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "usart.h"/* USER CODE BEGIN 0 *//* USER CODE END 0 */UART_HandleTypeDef huart1;/* USART1 init function */void MX_USART1_UART_Init(void)
{/* USER CODE BEGIN USART1_Init 0 *//* USER CODE END USART1_Init 0 *//* USER CODE BEGIN USART1_Init 1 *//* USER CODE END USART1_Init 1 */huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart1) != HAL_OK){Error_Handler();}/* USER CODE BEGIN USART1_Init 2 *//* USER CODE END USART1_Init 2 */}void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{GPIO_InitTypeDef GPIO_InitStruct = {0};if(uartHandle->Instance==USART1){/* USER CODE BEGIN USART1_MspInit 0 *//* USER CODE END USART1_MspInit 0 *//* USART1 clock enable */__HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/**USART1 GPIO ConfigurationPA9     ------> USART1_TXPA10     ------> USART1_RX*/GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF7_USART1;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART1 interrupt Init */HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART1_IRQn);/* USER CODE BEGIN USART1_MspInit 1 *//* USER CODE END USART1_MspInit 1 */}
}void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{if(uartHandle->Instance==USART1){/* USER CODE BEGIN USART1_MspDeInit 0 *//* USER CODE END USART1_MspDeInit 0 *//* Peripheral clock disable */__HAL_RCC_USART1_CLK_DISABLE();/**USART1 GPIO ConfigurationPA9     ------> USART1_TXPA10     ------> USART1_RX*/HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);/* USART1 interrupt Deinit */HAL_NVIC_DisableIRQ(USART1_IRQn);/* USER CODE BEGIN USART1_MspDeInit 1 *//* USER CODE END USART1_MspDeInit 1 */}
}/* USER CODE BEGIN 1 */
#include "stdio.h"
#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printfset to 'Yes') calls __io_putchar() */#define PUTCHAR_P

http://www.mrgr.cn/news/65265.html

相关文章:

  • python-18-常用的模块
  • sparkSQL面试题
  • 项目一:使用 Spring + SpringMVC + Mybatis + lombok 实现网络五子棋
  • [neo4j报错]py2neo.errors.ClientError: [Request.Invalid] Not Found解决方案
  • Java毕业设计-基于微信小程序的校园二手物品交易系统的实现(V2.0)
  • 什么是 OpenTelemetry?
  • 百度社招内推
  • ‌RS485是什么?
  • 拼多多2025秋招多模态大模型搜广推面试题
  • 基于MySQL的企业专利数据高效查询与统计实现
  • 城市防洪新篇章:城市内涝一维二维耦合模拟;水动力模型;水质模拟;海绵城市关键控制指标计算;城市排水系统,SWMM模型;慧天内涝软件
  • Chrome 130 版本新特性 Chrome 130 版本发行说明
  • 嵌入式调试手段(一):使用串口工具
  • PHP单商户多门店会员管理系统小程序源码
  • RDD转换算子:【map】
  • 群控系统服务端开发模式-应用开发-文件上传功能开发
  • 小白也能微调大模型:LLaMA-Factory使用心得
  • 小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
  • Harbor实战:一步步构建Docker私有镜像仓库的权威指南
  • C语言学习,标准库<signal.h>
  • netty之是如何做好服务准备的
  • PMP知识体系
  • 闪存学习_3:闪存SW(软件,software)
  • IMS 注册慢问题分析
  • Throughput
  • 常见的函数求导公式以及复合函数的求导公式