一、對4*3按鍵模塊編程分析

一、4*3鍵盤模塊實物分析

說明:
1、橫著4排,豎著3列,加起來共7組,所以對外引出7根線。
2、根據排針終端引腳又可分兩類。即橫排和豎列對應的引腳。
請添加圖片描述
請添加圖片描述

二、代碼編寫構想:

1、使用7個gpio輸入中斷,檢測7個引腳的輸入狀態。
2、當橫排和豎排引腳對應的io引腳,同時處于一致狀態時,即判斷按鍵被按下。


1、gpio初始化....
2、對按鍵中斷的處理
static uint8_t keyval=0;
/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{uint8_t row=0,column=0;if(0!=keyval) return;//橫排四組狀態編號。if(GPIO_Pin==GPIO_PIN_x){row=0x40;//第四排}else if(GPIO_Pin==GPIO_PIN_y){row=0x30;//第三排}else if(GPIO_Pin==GPIO_PIN_z){row=0x20;//第二排}else if(GPIO_Pin==GPIO_PIN_w){row=0x10;//第一排}//豎排三組狀態編號if(GPIO_PIN_SET==HAL_GPIO_ReadPin(GPIOx,GPIO_PIN_a)){column=0x03;//第三列}else if(GPIO_PIN_SET==HAL_GPIO_ReadPin(GPIOx,GPIO_PIN_b)){column=0x02;//第二列}else if(GPIO_PIN_SET==HAL_GPIO_ReadPin(GPIOx,GPIO_PIN_c)){column=0x01;//第一列}if(0!=row&&0!=column){keyval=row|column;//判斷按鍵是否按下的狀態//printf("key val:%02x\r\n",keyval);}
}
//對按鍵按下后的檢測處理與判斷
char get_key_ch(void)
{char ch=0;if(0!=keyval){if(0x11==keyval)ch='1';else if(0x12==keyval) ch='2';else if(0x13==keyval) ch='3';else if(0x21==keyval) ch='4';else if(0x22==keyval) ch='5';else if(0x23==keyval) ch='6';else if(0x31==keyval) ch='7';else if(0x32==keyval) ch='8';else if(0x33==keyval) ch='9';else if(0x41==keyval) ch='*';else if(0x42==keyval) ch='0';else if(0x43==keyval) ch='#';keyval=0;}return ch;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896609.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自然語言處理NLP入門 -- 第十節NLP 實戰項目 2: 簡單的聊天機器人

一、為什么要做聊天機器人? 在互聯網時代,我們日常接觸到的“在線客服”“自動問答”等,大多是以聊天機器人的形式出現。它能幫我們快速回復常見問題,讓用戶獲得及時的幫助,并在一定程度上減少人工客服的壓力。 同時&…

linux(1)文件管理

文章目錄 文件目錄系統相對路徑絕對路徑命令解析器文件管理 文件目錄系統 bin: 二進制文件目錄,存儲可執行文件 dev:設備目錄,所有的硬件都會抽象成文件存儲,比如鼠標鍵盤 home:存儲普通用戶的家目錄 li…

CSS—選擇器詳解:5分鐘動手掌握選擇器

個人博客:haichenyi.com。感謝關注 1. 目錄 1–目錄2–引言3–種類4–優先級 引言 什么是選擇器? CSS選擇器是CSS(層疊樣式表)中的一種規則,用于指定要應用樣式的HTML元素。它們就像是指向網頁中特定元素的指針&#…

大模型微調入門(Transformers + Pytorch)

目標 輸入:你是誰? 輸出:我們預訓練的名字。 訓練 為了性能好下載小參數模型,普通機器都能運行。 下載模型 # 方式1:使用魔搭社區SDK 下載 # down_deepseek.py from modelscope import snapshot_download model_…

DeepSeek實戰

DeepSeek 接入實戰:從零開始快速上手 引言 在當今的 AI 領域,DeepSeek 作為一個強大的自然語言處理(NLP)平臺,提供了豐富的 API 接口,幫助開發者快速實現智能對話、文本生成、語義分析等功能。本文將帶你…

Android NDK打包封裝教程與優化技巧

關于NDK打包封裝的問題。首先,用戶可能不太清楚NDK的基本概念,所以我應該先解釋NDK是什么以及它的作用。然后,用戶可能想知道如何在Android項目中使用NDK,所以需要分步驟說明配置過程,包括安裝NDK、配置CMake或ndk-build,創建JNI接口,編寫C/C++代碼,編譯和打包。 接下…

【告別雙日期面板!一招實現el-date-picker智能聯動日期選擇】

告別雙日期面板!一招實現el-date-picker智能聯動日期選擇 1.需求背景2.DateTimePicker 現狀圖3.日期選擇器實現代碼4.日期選擇器實現效果圖5.日期時間選擇器實現代碼6.日期時間選擇器實現效果圖 1.需求背景 在用戶使用時間查詢時,我們經常需要按月份篩選…

Linux(ftrace)__mcount的實現原理

Linux 內核調試工具ftrace 之(_mcount的實現原理) ftrace 是 Linux 內核中的一種跟蹤工具,主要用于性能分析、調試和內核代碼的執行跟蹤。它通過在內核代碼的關鍵點插入探針(probe)來記錄函數調用和執行信息。這對于開…

Java注解(Annotation)

一、注解的定義 核心概念 注解是Java中一種特殊形式的“元數據”,用于為類、方法、字段、參數等代碼元素附加說明信息。它不會直接影響代碼邏輯,但可以通過編譯器、框架或反射機制進行解析和處理。 與注釋(Comment)的區別 注釋&a…

tauri2+typescript+vue+vite+leaflet等的簡單聯合使用(一)

項目目標 主要的目的是學習tauri。 流程 1、搭建項目 2、簡單的在項目使用leaflet 3、打包 準備項目 環境準備 廢話不多說,直接開始 需要有準備能運行Rust的環境和Node,對于Rust可以參考下面這位大佬的文章,Node不必細說。 Rust 和…

深入解析 Svelte:下一代前端框架的革命

深入解析 Svelte:下一代前端框架的革命 1. Svelte 簡介 Svelte 是一款前端框架,與 React、Vue 等傳統框架不同,它采用 編譯時(Compile-time) 方式來優化前端應用。它不像 React 或 Vue 依賴虛擬 DOM,而是…

關于流水線的理解

還是不太理解,我之前一直以為,對axis總線,每一級的寄存器就像fifo一樣,一級一級的分級存儲最后一級需要的數據。 像這張圖,一開始是在解析axis流形式的數據包,數據包一直都能輸入,所以valid一直…

Python代碼之美:從規范到藝術

基礎規范:代碼的"顏值"很重要 👉大禮包🎁:👈 PEP 8:不只是規范,是寫作藝術 良好的代碼格式就像優美的書法,讓人賞心悅目。比如: # 不推薦的寫法 def calcul…

【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案

作者:Odoo技術開發/資深信息化負責人 日期:2025年2月28日 一、部署背景與目標 DeepSeek R1作為國產大語言模型的代表,憑借其強化學習驅動的推理能力,在復雜任務(如數學問題、編程邏輯)中表現優異。本地化部…

8 SpringBoot進階(上):AOP(面向切面編程技術)、AOP案例之統一操作日志

文章目錄 前言1. AOP基礎1.1 AOP概述: 什么是AOP?1.2 AOP快速入門1.3 Spring AOP核心中的相關術語(面試)2. AOP進階2.1 通知類型2.1.1 @Around:環繞通知,此注解標注的通知方法在目標方法前、后都被執行(通知的代碼在業務方法之前和之后都有)2.1.2 @Before:前置通知,此…

【react】快速上手基礎教程

目錄 一、React 簡介 1.什么是 React 2.React 核心特性 二、環境搭建 1. 創建 React 項目 2.關鍵配置 三、核心概念 1. JSX 語法 表達式嵌入 樣式處理 2. 組件 (Component) 3. 狀態 (State) 與屬性 (Props) 4. 事件處理 合成事件(SyntheticEvent) 5. …

七星棋牌 6 端 200 子游戲全開源修復版源碼(樂豆 + 防沉迷 + 比賽場 + 控制)

七星棋牌源碼 是一款運營級的棋牌產品,覆蓋 湖南、湖北、山西、江蘇、貴州 等 6 大省區,支持 安卓、iOS 雙端,并且 全開源。這個版本是 修復優化后的二開版本,新增了 樂豆系統、比賽場模式、防沉迷機制、AI 智能控制 等功能&#…

【人工智能】Deepseek 與 Kimi 聯袂:重塑 PPT 創作,開啟智能演示新紀元

我的個人主頁 我的專欄:人工智能領域、java-數據結構、Javase、C語言,希望能幫助到大家!!!點贊👍收藏? 前言 在當今快節奏的工作與學習場景中,PPT 制作常常是一項耗時耗力的任務。從前期的資…

Kafka的高水位、低水位是什么概念?

Kafka 的 高水位(High Watermark, HW) 和 低水位(Low Watermark, LW) 是和數據存儲、消費進度、日志清理等密切相關的重要概念。我們用一個 “蓄水池” 的比喻來形象地解釋它們的作用。 1. Kafka 里的數據像一個蓄水池 Kafka 的數…

基于JAVA+Spring+mysql_快遞管理系統源碼+設計文檔

文末獲取源碼數據庫文檔 感興趣的可以先收藏,有畢設問題,項目以及論文撰寫等問題都可以和博主溝通,盡最大努力幫助更多的人! 摘 要 隨著物流行業信息化的深入使得物流過程中貨物的狀態和變化透明化,現代信息化的接入使…