按下按键之后,打印一句话------>三个按键需要实现
main.c:
#include "key.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms){
int i,j;
for(i = 0; i < ms;i++)
for (j = 0; j < 1800; j++);}
int main(){
//key1键盘
//EXIT控制器初始化
void PF9_exti_init();
//GICD控制器初始化
void PF9_gicd_init();
//gicc控制器初始化
void PF9_gicc_init();
//key2键盘
//EXIT控制器初始化
void PF7_exti_init();
//GICD控制器初始化
void PF7_gicd_init();
//gicc控制器初始化
void PF7_gicc_init();
//key3键盘
//EXIT控制器初始化
void PF8_exti_init();
//GICD控制器初始化
void PF8_gicd_init();
//gicc控制器初始化
void PH8_gicc_init();
while(1) {
}
return 0;
}
key.h:
#ifndef __KEY_h__
#define __KEY_h__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gic.h"
//key1键盘
//EXIT控制器初始化
void PF9_exti_init();
//GICD控制器初始化
void PF9_gicd_init();
//gicc控制器初始化
void PF9_gicc_init();
//key2键盘
//EXIT控制器初始化
void PF7_exti_init();
//GICD控制器初始化
void PF7_gicd_init();
//gicc控制器初始化
void PF7_gicc_init();
//key3键盘
//EXIT控制器初始化
void PF8_exti_init();
//GICD控制器初始化
void PF8_gicd_init();
//gicc控制器初始化
void PH8_gicc_init();
#endif
key.c:
#include "key.h"
//EXIT控制器初始化
void PF9_exit_init()
{
//------RCC章节-----------
RCC->MP_AHB4ENSETR |=0x01 << 5;
//-------输入模式--------------
//key1
GPIOF->MODER |=(~(0x03 << 18));
//初始化EXIT
EXTI->EXTICR3 &=(~(0xff << 8));
EXTI->EXTICR3 |=(0x05 << 8);
//编写事件
EXTI->FTSR1 |= 0x01 << 9;
EXTI->C1IMR1 |= 0x01 << 9;
}
void PF7_exit_init()
{
//------RCC章节-----------
RCC->MP_AHB4ENSETR |=0x01 << 5;
//-------输入模式--------------
//key1
GPIOF->MODER |=(~(0x03 << 14));
//初始化EXIT
EXTI->EXTICR3 &=(~(0xff << 24));
EXTI->EXTICR3 |=(0x05 << 24);
//编写事件
EXTI->FTSR1 |= 0x01 << 7;
EXTI->C1IMR1 |= 0x01 << 7;
}
void PF8_exit_init()
{
//------RCC章节-----------
RCC->MP_AHB4ENSETR |=0x01 << 5;
//-------输入模式--------------
//key1
GPIOF->MODER |=(~(0x03 << 16));
//初始化EXIT
EXTI->EXTICR3 |=(0x05 << 0);
//编写事件
EXTI->FTSR1 |= 0x01 << 8;
EXTI->C1IMR1 |= 0x01 << 8;
}
//GICD控制器初始化
void PF9_gicd_init()
{
GICD->CTRL |=0x01 << 0;
GICD->ISENABLER[3] |=0x01 << 3;
GICD->IPRIORITYR[24] &= (~(0x1f << 27));
GICD->ITARGETSR[24] &= (~(0x3 << 24));
GICD->ITARGETSR[24] |= 0x1 << 24;
}
//GICD控制器初始化
void PF7_gicd_init()
{
GICD->CTRL |=0x01 << 0;
GICD->ISENABLER[3] |=0x01 << 3;
GICD->IPRIORITYR[24] |= (0x1f << 11);
GICD->ITARGETSR[24] |= 0x1 << 8;
}
//GICD控制器初始化
void PF8_gicd_init()
{
GICD->CTRL |=0x01 << 0;
GICD->ISENABLER[3] |=0x01 << 2;
GICD->IPRIORITYR[24] |= (0x1f << 19);
GICD->ITARGETSR[24] |= 0x1 << 16;
}
//GICC控制器初始化
void PF9_gicc_init()
{
GICC->CTRL |=0x01 << 0;
GICC->PMR &=(~(0x1f << 3));
GICC->PMR |=(0x1f << 3);
}
//GICC控制器初始化
void PF7_gicc_init()
{
GICC->CTRL |=0x01 << 0;
GICC->PMR |=(0x02 << 2);
}
//GICC控制器初始化
void PF8_gicc_init()
{
GICC->CTRL |=0x01 << 0;
GICC->PMR |=(0x02 << 2);
}
do_irq:
#include "key.h"
extern void printf(const char *fmt, ...);
extern void delay_ms(int ms);
unsigned int i = 0;
void do_irq(void)
{
unsigned int num =0;
//获取中断信号
num=GICC->IAR;
//判断终端的好坏
switch(num)
{
//99:key1键盘按下
case 99:
delay_ms(500);
printf("key1---------");
EXTI->FPR1 |= (0X1<<9);
GICD->ICPENDR[3] |=(0x01 << 3);
break;
//97:key2键盘按下
case 97:
delay_ms(500);
printf("key2---------");
EXTI->FPR1 |= (0X1<<7);
GICD->ICPENDR[3] |=(0x01 << 1);
break;
//98:key3键盘按下
case 98:
delay_ms(500);
printf("key3---------");
EXTI->FPR1 |= (0X1<<8);
GICD->ICPENDR[3] |=(0x01 << 2);
break;
default:
delay_ms(500);
printf("输入错误,请重新输入!---------");
}
//清楚中断状态位
GICC->EOIR &= (~(0x3ff << 0));
GICC->EOIR |=num;
}
相关文章:
按下按键之后,打印一句话------>三个按键需要实现
main.c: #include "key.h" extern void printf(const char *fmt, ...); void delay_ms(int ms){ int i,j; for(i 0; i < ms;i) for (j 0; j < 1800; j);} int main(){ //key1键盘 //EXIT控制器初始化 void PF9_exti_init(); //GICD控…...
Mac配置VScode
Mac配置VScode 常用技巧 命令调色板 根据您当前的上下文访问所有可用的命令。 键盘快捷键:⇧⌘P 快速打开 快速打开文件。 键盘快捷键:⌘P **提示:**类型?查看命令建议。 在最近打开的文件夹和工作区之间导航 最近打开 键盘快捷…...
MAC地址IP地址 端口
网络结构: 服务器-客户机(C/S)Client-Server结构,如QQ,LOL都拥有客户端 优点:响应速度快,形式多样,安全新较高缺点:安装软件和维护,不能跨平台LINUX/windows/MAC浏览器-…...
关于虚拟数字人你想知道的都在这里
2022年底,微软旗下的人工智能实验室Open AI发布的对话式大型语言模型ChatGPT聊天机器人一夜蹿红,5天用户量超百万,在各大中外媒体平台掀起了一阵热潮。也带火了人工智能相关产业,AI虚拟数字人就是其中之一,一个随着元宇…...
分布式任务调度处理方案(无代码)
业务涉及到,需要向数据库、redis、elasticsearch、MinIO写四份数据,这里存在分布式事务问题。如何解决问题,先分析cap,是要保证可用性,还是保证一致性。如何选择是CP还是AP?分析业务场景CP的场景࿱…...
2023年博管办香江学者计划、澳门青年学者开始申报
2023年2月20日,全国博士后管委会办公室官方网站发出了2023年香江学者计划、澳门青年学者计划和博士后国(境)外学术交流项目申报指南,以下知识人网小编仅转载香江学者计划和澳门青年学者计划申报指南并做重点解读。知识人网整理香江…...
(二十一)、实现评论功能(1)【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】
1,评论回复模块的样式布局 1.1 在detail页面添加uview中的 Empty 内容为空组件 <!-- 评论区 --><view class"comment"><u-empty mode"comment" icon"http://cdn.uviewui.com/uview/empty/comment.png"></u-emp…...
【Docker】初识Dcoker以及镜像操作(一)
目录 1.初识Docker 1.1.什么是Docker 1.1.1.应用部署的环境问题 1.1.2.Docker解决依赖兼容问题 1.1.3.Docker解决操作系统环境差异 1.1.4.小结 1.2.Docker和虚拟机的区别 1.3.Docker架构 1.3.1.镜像和容器 1.3.2.DockerHub 1.3.3.Docker架构 1.3.4.小结 1.4.安装D…...
(1)C#传智:在vs2022中基本了解(第一天)
开始vs2022中C#入门,就是一笔记,算不上原创,没办法得选啊。 一、vs中卸载项目和移除项目有什么区别? 1、卸载、移除都不会移除物理文件,只会删除关联 2、卸载删除关联的程度低,卸载后项目只是“变灰色…...
【数据结构与算法】算法的时间复杂度和空间复杂度
文章目录前言1.算法效率1.1.如何衡量一个算法的好坏1.2.算法的复杂度2.时间复杂度2.1.时间复杂度的概念2.2.大O的渐进表示法2.3.常见时间复杂度计算举例2.4.常见时间复杂度3.空间复杂度4.复杂度oj练习Practice.1 消失的数字Practice.2 旋转数组写在最后前言 关于时空复杂度的分…...
不使用contab -e的方式,添加计划任务
不使用contab -e的方式,添加计划任务 crond 服务的周期任务的文件存放位置在:/var/spool/cron/ 如果你是root用户的话那么你的周期任务文件名就叫root 如果你使用其他用户创建的周期任务,任务文件名就叫它本身 1、 使用root用户创建周期任…...
sentry2摄像头之blink篇
一、硬件 arduino sentry2摄像头 二、实验内容 第一步 安装好esp8266库函数 具体详见ES826安装指导,CSDN有很多资源,或者浏览 https://tosee.readthedocs.io/zh/latest/ 网址 第二步 配置 详情见视频,有简单讲解 视频1:电脑端配置 https://live.csdn.net/v/277427 视频2:s…...
springboot集成PDF导出
内容目录 知识准备 什么是itext itext的历史版本和License问题 标准的itextpdf导出的步骤 实现案例 Pom依赖 导出PDF 添加页眉页脚和水印 进一步理解 遇到license问题怎么办 为何添加页眉页脚和水印是通过PdfPageEvent来完成 除了处理word, excel等文件外,最为常见的…...
Podman 创建持久 MySQL 数据库容器
使用正确的 SELinux 上下文和权限创建目录/home/student/local/mysql。 创建/home/student/local/mysql目录。 [studentworkstation ~]$ mkdir -vp /home/student/local/mysql mkdir: 创建的目录/home/student/local mkdir: 创建的目录/home/student/local/mysql/home/studen…...
Java-反射
反射概述 Java反射机制: 是指在运行时去获取一个类的变量和方法信息。然后通过获取的信息来创建对象,调用方法的一种机制。由于这种<动态性>,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍…...
构造agent类型的内存马(内存马系列篇十三)
写在前面 前面我们对JAVA中的Agent技术进行了简单的学习,学习前面的Agent技术是为了给这篇Agent内存马的实现做出铺垫,接下来我们就来看看Agent内存马的实现。 这是内存马系列篇的第十三篇了。 环境搭建 我这里就使用Springboot来搭建一个简单的漏洞…...
JavaEE简单示例——<select>中的查询参数传递和结果集封装自动映射关系
简单介绍: 在之前我们在讲SQL映射文件中的映射查询语句的<select>标签的时候,对其中的四个常用属性的讲解并不是那么的透彻,今天就来详细的解释<select>的四个常用属性的具体含义以及<select>标签在进行查询的时候查询参数…...
信息安全圈都在谈论CISP,CISSP,这两者有什么区别呢?
CISP 和 CISSP 都是信息安全认证资格考试,但是它们之间有一些区别。 CISP(Certified Information Security Professional)认证考试是由国际信息系统安全认证联盟(ISC)所开发和管理的,主要考核信息安全专业人员在保障企…...
浅谈Redisson实现分布式锁的原理
1.Redisson简介 Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,我没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java…...
UVM实战(张强)-- UVM中的寄存器模型
目录一.整体的设计结构图二.各个组件代码详解2.1 DUT2.2 bus_driver2.3 bus_sequencer2.4 bus_monitor2.5 bus_agent2.6 bus_transaction2.7 bus_if2.8 my_if2.9 my_transaction2.10 my_sequencer2.11 my_driver2.12 my_monitor2.13 my_agent2.14 my_scoreboard2.15 my_env2.16…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果