DSP2335的按键输入key工程笔记

配置输入

时钟

方向

下拉

本文使用的是矩阵按键  12 13 14 为物理上拉输入,48 49 50为输出;

可以考虑输入AQ滤波;里面没有加;

/** key.c**  Created on: 2023年11月19日*      Author: peng*/
#include"key.h"
#include"led1.h"
void key_init(void)
{EALLOW;SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK=1;GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;//输入GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;//输入GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;GpioCtrlRegs.GPADIR.bit.GPIO14 = 0;//输入GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;//输出GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO48 = 1;//GpioCtrlRegs.GPBPUD.bit.GPIO48 = 0;GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1;//GpioCtrlRegs.GPBPUD.bit.GPIO49 = 0;GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO50 = 1;//GpioCtrlRegs.GPBPUD.bit.GPIO50 = 0;EDIS;GpioDataRegs.GPBSET.bit.GPIO48 = 1;GpioDataRegs.GPBSET.bit.GPIO49 = 1;GpioDataRegs.GPBSET.bit.GPIO50 = 1;
}unsigned char read_row()
{unsigned char temp=0;temp=( GpioDataRegs.GPADAT.bit.GPIO12<<0| GpioDataRegs.GPADAT.bit.GPIO13<<1| GpioDataRegs.GPADAT.bit.GPIO14<<2);return temp;
}
unsigned char read_line()
{unsigned char temp=0;temp= (GpioDataRegs.GPBDAT.bit.GPIO48|((GpioDataRegs.GPBDAT.bit.GPIO49&0x01)<<1)|((GpioDataRegs.GPBDAT.bit.GPIO50&0x01)<<2));return temp;
}void  _SCAN_line(char x)
{GpioDataRegs.GPBDAT.bit.GPIO48=~((long)0x01&x);GpioDataRegs.GPBDAT.bit.GPIO49=~(((long)0x02&x)>>1);GpioDataRegs.GPBDAT.bit.GPIO50=~(((long)0x04&x)>>2);
}
char  SCAN_row ()
{return GpioDataRegs.GPADAT.bit.GPIO12<<0| GpioDataRegs.GPADAT.bit.GPIO13<<1| GpioDataRegs.GPADAT.bit.GPIO14<<2;
}char key_scan()
{char key = 0;unsigned char i = 0,tt=0x1;unsigned int temp=0;unsigned char p48=0,p49=0,p50=0;tt=~tt;static char key_up_flag = 0,key_breakup=0;for ( i = 0; i < 3; i++){switch (i)//列扫描{case 0: _SCAN_line(1);break;case 1: _SCAN_line(2);break;case 2: _SCAN_line(4);break;default:break;}if ( (temp=(SCAN_row() & 0x07) )!= 0x07 )//被按下{DELAY_US(10000);if ((temp=(SCAN_row() & 0x07)) != 0x07){key_up_flag = 1;switch (temp=( ~temp)&0x07 ){case 1: key = (temp - 1) * 3 + i+1; key_breakup = key;return 0;case 2: key = (temp- 1) * 3 + i+1 ; key_breakup = key;return 0;case 4: key = (temp - 1) * 3 + i+1;  key_breakup = key;return 0;default:key = 0;break;}// key_breakup = key;}}else{if (key_up_flag == 1){key_up_flag = 0;return key_breakup;}}}return 0;
}void key_LED()//按键控制LED
{//char key = 0;switch (key_scan()){case 1:  LED1_TOGGLE; break;case 2:  LED2_TOGGLE; break;case 3:  LED3_TOGGLE; break;default: break;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Select 语句执行顺序

一条 SQL 查询语句结构如下&#xff1a; SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_conditio…

Java智慧工地SaaS管理平台源码:AI/云计算/物联网

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…

【Linux】常用系统工作命令

一、Linux文档目录结构 在Linux系统中&#xff0c;目录、字符设备、套接字、硬盘、光驱、打印机等都被抽象成文件形式&#xff0c;“Linux系统中一切都是文件”。Linux系统中的一切文件都是从"根"目录&#xff08;/&#xff09;开始的&#xff0c;并按照文件系统层次…

CSS 文本属性篇

文字颜色 属性名&#xff1a;color作用&#xff1a;控制文字的颜色可选值&#xff1a; 1.颜色名 color: blue; 2.rgb或rgba color:rgb(132, 220, 254); color:rgba(132, 220, 254,0.5); 3.hex或hexa&#xff08;十六进制&#xff09; color:#0078d4; color:#0078d48b; 4.hsl或h…

《网络协议》08. 概念补充

title: 《网络协议》08. 概念补充 date: 2022-10-06 18:33:04 updated: 2023-11-17 10:35:52 categories: 学习记录&#xff1a;网络协议 excerpt: 代理、VPN、CDN、网络爬虫、无线网络、缓存、Cookie & Session、RESTful。 comments: false tags: top_image: /images/back…

MySQL SUBSTRING_INDEX 函数用法

定义和用法 SUBSTRING_INDEX()函数在指定数量的分隔符出现之前返回字符串的子字符串。 语法 SUBSTRING_INDEX(string, delimiter, number) 参数值 参数 描述 string 必须项。原始字符串 delimiter 必须项。要搜索的分隔符 number 必须项。搜索分隔符的次数。可以是正…

Vue3+Vite实现工程化,事件绑定以及修饰符

我们可以使用v-on来监听DOM事件&#xff0c;并在事件触发时执行对应的Vue的Javascript代码。 用法&#xff1a;v-on:click "handler" 或简写为 click "handler"vue中的事件名原生事件名去掉 on 前缀 如:onClick --> clickhandler的值可以是方法事件…

OpenCV图像处理、计算机视觉实战应用

OpenCV图像处理、计算机视觉实战应用 专栏简介一、基于差异模型模板匹配缺陷检测二、基于NCC多角度多目标匹配三、基于zxing多二维码识别四、基于tesseract OCR字符识别 专栏简介 基于OpenCV C分享一些图像处理、计算机视觉实战项目。不定期持续更新&#xff0c;干货满满&…

设置 wsl 桥接模式

一、环境要求 Win10/Win11 专业版&#xff0c;并已安装 Hyper-V 二、具体步骤 打开 Hyper-V 管理器 创建虚拟交换机 WSL Bridge 修改wsl配置文件 .wslconfig .wslconfig 文件所在路径如下&#xff1a; C:\Users\<UserName>\.wslconfig若 .wslconfig 文件不存在&am…

全面揭秘!微信传输助手的用处有哪些!

微信文件传输助手不是真人。它主要是通过服务器和网络技术来完成文件传输功能的。用户可通过微信文件传输助手实现文件在手机到电脑端的快速传输&#xff0c;而不需要其他有线设备。 微信文件传输助手是由微信官方提供的功能&#xff0c;主要用于文件的传输和保存。以下是其主要…

C/C++---------------LeetCode第1207.独一无二的出现次数

独一无二的出现次数 题目及要求哈希算法在main里使用 题目及要求 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;a…

uC/OS-Il---多级中断机制

目录 中断处理的一般流程多级中断机制的出现多级中断机制的实现必须在一个任务或中断中配对使用保存当前中断状态并关中断---OS_ENTER_CRITICAL()汇编语言函数---OS_CPU_SR_Save() 恢复之前的中断状态以便开中断---OS_EXIT_CRITICAL()汇编语言函数---OS_CPU_SR_Restore() 必须在…

【短文】【踩坑】可以在Qt Designer给QTableWidge添加右键菜单吗?

2023年11月18日&#xff0c;周六上午 今天早上在网上找了好久都没找到教怎么在Qt Designer给QTableWidge添加右键菜单的文章 答案是&#xff1a;不可以 在Qt Designer中无法直接为QTableWidget添加右键菜单。 Qt Designer主要用于创建界面布局和设计&#xff0c;无法直接添加…

基于STC12C5A60S2系列1T 8051单片机的SPI总线器件数模芯片TLC5615实现数模转换应用

基于STC12C5A60S2系列1T 8051单片的SPI总线器件数模芯片TLC5615实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍SPI总线器件数模芯片TLC5615介绍通过按…

数据结构与算法编程题5

从有序表中删除重复元素&#xff0c;使表中所有元素值均不相同。 #include <iostream> using namespace std;typedef int ElemType; #define Maxsize 100 #define OK 1 #define ERROR 0 typedef struct SqList {ElemType data[Maxsize];int length; }SqList;void Init_…

单链表相关面试题--2.反转一个单链表

/* 解题思路&#xff1a; 此题一般常用的方法有两种&#xff0c;三指针翻转法和头插法 1. 三指针翻转法记录连续的三个节点&#xff0c;原地修改节点指向 2. 头插法每一个节点都进行头插 */ // 三个指针翻转的思想完成逆置 struct ListNode* reverseList(struct ListNode* head…

python-opencv 培训课程笔记(1)

python-opencv 培训课程笔记&#xff08;1&#xff09; 博主参加了一次opencv库的培训课程&#xff0c;把课程所学整理成笔记&#xff0c;供大家学习&#xff0c;第一次课程包括如下内容&#xff1a; 1.读取图像 2.保存图像 3.使用opencv库显示图像 4.读取图像为灰度图像 …

PlayCover“模拟器”作弊解决方案

当下的游戏市场&#xff0c;移动游戏已占据了主导地位&#xff0c;但移动端游戏碍于屏幕大小影响操作、性能限制导致卡顿等因素&#xff0c;开始逐步支持多端互通。但仍有一些游戏存在移动端与 PC 端不互通、不支持 PC 端或没有 Mac 版本&#xff0c;导致 Mac 设备体验游戏不方…

docker部署lnmp环境

文章目录 前期准备&#xff1a;一、部署mysql1.1 获取 Mysql 5.7.22 镜像1.2 启动mysql容器 二、部署php2.1 获取php 7.2镜像2.2 启动php 容器2.3 php的扩展安装 三、部署nginx3.1 获取nginx:1.14镜像3.2 启动nginx容器3.3 编写nginx虚拟主机配置文件&#xff0c;使其支持php3.…

【以图会意】操作系统的加载流程

声明&#xff1a;本图为博主方便自己记忆理解&#xff0c;诸多疏漏望请博友理性观看&#xff01;如有错误不足恳请指正。 首先&#xff0c;操作系统是一段程序&#xff0c;他保存在ROM中&#xff0c;在开机时&#xff0c;CPU被激活&#xff0c;首先将IR置为BIOS&#xff08;Bas…