STM32mp157aaa按键中断实验

效果图:

源码:

#include "key.h"
void hal_key1_rcc_gpio_init()
{// 使能GPIOF组RCC->MP_AHB4ENSETR |= (0x1 << 5);// 设置引脚位输入模式GPIOF->MODER &= (~(0X3 << 18));GPIOF->MODER &= (~(0X3 << 16));GPIOF->MODER &= (~(0X3 << 14));
}void hal_key1_exti_init()
{// 使能EXTIEXTI->EXTICR3 &= (~(0XFF << 8));EXTI->EXTICR3 |= (0X5 << 8);// 使能EXTIEXTI->EXTICR2 &= (~(0XFF << 24));EXTI->EXTICR2 |= (0X5 << 24);// 使能EXTIEXTI->EXTICR3 &= (~(0XFF));EXTI->EXTICR3 |= (0X5);// 设置为下降沿触发EXTI->FTSR1 |= (0X7 << 7);// 设置不屏蔽EXTI->C1IMR1 |= (0X7 << 7);// 清除中断挂起标志位EXTI->FPR1 |= (0X1 << 9);
}void hal_key1_gic_init()
{/*--------GCID---------*/// gicd组使能GICD->CTRL |= (0X1);// 对应中断组使能GICD->ISENABLER[3] |= (0X1 << 3);GICD->ISENABLER[3] |= (0X1 << 2);GICD->ISENABLER[3] |= (0X1 << 1);// 中断优先级GICD->IPRIORITYR[24] &= (~(0X1F << 27));GICD->IPRIORITYR[24] |= (0X0A << 27);// 中断优先级GICD->IPRIORITYR[24] &= (~(0X1F << 11));GICD->IPRIORITYR[24] |= (0X0A << 11);// 中断优先级GICD->IPRIORITYR[24] &= (~(0X1F << 19));GICD->IPRIORITYR[24] |= (0X0A << 19);// 中断分配给哪个cpuGICD->ITARGETSR[24] &= (~(0X3 << 24));GICD->ITARGETSR[24] |= (0X1 << 24);// 中断分配给哪个cpuGICD->ITARGETSR[24] &= (~(0X3 << 8));GICD->ITARGETSR[24] |= (0X1 << 8);// 中断分配给哪个cpuGICD->ITARGETSR[24] &= (~(0X3 << 16));GICD->ITARGETSR[24] |= (0X1 << 16);// 清除挂起位标志// GICD->ICPENDR[2] |= (0X1 << 3);// GICD->ICPENDR[1] |= (0X1 << 1);// GICD->ICPENDR[2] |= (0X1 << 2);/*--------GICC---------*/GICC->CTRL |= (0X1);GICC->PMR &= (~(0X1F << 3));GICC->PMR |= (0X0F << 3);
}

#include "key.h"
extern void printf(const char *fmt, ...);
unsigned int i = 0;
void do_irq(void) // 中断处理函数
{// printf("have someone asshole interrupt!\n");unsigned int irq_number = GICC->IAR & 0x3FF;// 根据中断号调用对应的中断处理函数switch (irq_number){case 99:printf("key1 down!!!key1 ID = %d\n", irq_number);EXTI->FPR1 |= (0X1 << 9);GICD->ICPENDR[3] |= (0X1 << 3);GICC->EOIR = irq_number;break;case 98:printf("key3 down!!!key3 ID = %d\n", irq_number);EXTI->FPR1 |= (0X1 << 8);GICD->ICPENDR[3] |= (0X1 << 2);GICC->EOIR = irq_number;break;case 97:printf("key2 down!!!key2 ID = %d\n", irq_number);EXTI->FPR1 |= (0X1 << 7);GICD->ICPENDR[3] |= (0X1 << 1);GICC->EOIR = irq_number;break;default:// 处理其他中断或错误情况break;}// 清除中断号// EXTI->FPR1 |= (0X1 << 9);//GICD->ICPENDR[3] |= (0X1 << 3);//GICC->EOIR = irq_number;
}

#include "key.h"int main()
{hal_key1_exti_init();hal_key1_gic_init();hal_key1_rcc_gpio_init();while (1){}return 0;
}
#ifndef __KEY_H__
#define __KEY_H__
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"void hal_key1_rcc_gpio_init();void hal_key1_exti_init();void hal_key1_gic_init();#endif

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

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

相关文章

VMware创建新虚拟机教程(保姆级别)

&#x1f4e2; 续上一篇 最新超详细VMware虚拟机安装完整教程-CSDN博客 &#xff0c;本章将详细讲解VMware创建虚拟机。 一、创建新的虚拟机 点击【创建新的虚拟机】&#xff01; 点击【自定义&#xff08;高级&#xff09;】> 下一步&#xff01; > 默认下一步&#x…

耐克:老大的烦恼

股价暴跌20%&#xff0c;老大最近比较烦。 今天说说全球&#xff08;最&#xff09;大运动品牌——耐克。 最近耐克发布2023-2024财年业绩&#xff08;截止于2024.5.31&#xff09;&#xff0c;还是爆赚几百亿美元&#xff0c;还是行业第一&#xff0c;但业绩不及预期&#xf…

Redis为什么设计多个数据库

​关于Redis的知识前面已经介绍过很多了,但有个点没有讲,那就是一个Redis的实例并不是只有一个数据库,一般情况下,默认是Databases 0。 一 内部结构 设计如下: Redis 的源码中定义了 redisDb 结构体来表示单个数据库。这个结构有若干重要字段,比如: dict:该字段存储了…

scikit-learn教程

scikit-learn&#xff08;通常简称为sklearn&#xff09;是Python中最受欢迎的机器学习库之一&#xff0c;它提供了各种监督和非监督学习算法的实现。下面是一个基本的教程&#xff0c;涵盖如何使用sklearn进行数据预处理、模型训练和评估。 1. 安装和导入包 首先确保安装了…

【漏洞复现】D-Link NAS 未授权RCE漏洞(CVE-2024-3273)

0x01 产品简介 D-Link 网络存储 (NAS)是中国友讯&#xff08;D-link&#xff09;公司的一款统一服务路由器。 0x02 漏洞概述 D-Link NAS nas_sharing.cgi接口存在命令执行漏洞&#xff0c;该漏洞存在于“/cgi-bin/nas_sharing.cgi”脚本中&#xff0c;影响其 HTTP GET 请求处…

Java 汉诺塔问题 详细分析

汉诺塔 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小…

vulnhub靶场ai-web 2.0

1 信息收集 1.1 主机发现 arp-scan -l 主机地址为192.168.1.4 1.2 服务端口扫描 nmap -sS -sV -A -T5 -p- 192.168.1.4 开放22&#xff0c;80端口 2 访问服务 2.1 80端口访问 http://192.168.1.4:80/ 先尝试admin等其他常见用户名登录无果 然后点击signup发现这是一个注…

prescan软件中导入路径文件txt/lpx

由于博主收到的是lpx格式的路径文件&#xff0c;因此&#xff0c;第一步 1.记事本打开 ctrla 全选 ctrlc 复制 2.新建一个excel 鼠标定位到第一行第一列的格子 ctrlv 复制 3.数据栏“分列”功能 4. (0.1递增的数列&#xff0c;纬度&#xff0c;经度&#xff0c;高程) 导入…

JDBC操作流程

目录 简介 具体操作 1. 引入驱动包 1&#xff09;下载驱动包 2&#xff09;引入驱动包到项目中 2. 编写代码 1&#xff09;创建数据源 2&#xff09;建立连接 3&#xff09;构造 SQL 语句 4&#xff09;执行 SQL 语句 5&#xff09;释放资源 总结 简介 JDBC 就是使…

某网页gpt的JS逆向

原网页网址 (base64) 在线解码 aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei8 逆向效果图 调用代码&#xff08;复制即用&#xff09; 把倒数第三行换成下面的base64解码 aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei9hcGkvZ2VuZXJhdGU import hashlib import time import reques…

C语言+ MSSQL技术开发的 PACS系统源码:CT后处理技术之仿真内镜CTVE

C语言 MSSQL技术开发的 PACS系统源码&#xff1a;CT后处理技术之仿真内镜CTVE 仿真内窥镜VE VE是利用医学影像作为原始数据&#xff0c;融合图像处理、计算机图形学、科学计算可视化、虚拟现实技术&#xff0c;模拟传统光学内镜的一种技术。 又叫做腔内重建技术&#xff0c;是…

试用笔记之-汇通来电显示软件

首先汇通来电显示软件下载 http://www.htsoft.com.cn/download/httelephone.rar

平衡树专题Splay

写在前面&#xff1a; 部分来自孙宝&#xff08;Steven24&#xff09;的博客&#xff0c;表示感谢。 认识 什么是Splay 就是BST的一种&#xff0c;整体效率是很高的&#xff0c;均摊的次数是O(logn)级别的。 基本操作就是把节点旋转到BST的root&#xff0c;从而改善BST的平…

免交互简单操作

免交互 交互&#xff1a;我们发出指令控制程序的运行&#xff0c;程序在接收到指令后按照指令的效果作出对应的反应 免交互&#xff1a;间接的&#xff0c;通过第三方的方式把指令传给程序&#xff0c;不用直接下达指令 Here Document免交互 这是命令行格式&#xff0c;也可…

不用找了!这个软件自带各行业话术,客服效率飞跃

有一款客服工具软件&#xff0c;不但能吸附聊天窗口&#xff0c;实现图文视频话术的一键发送&#xff0c;还内置了多行业的优质客服话术模板&#xff0c;允许用户直接下载使用&#xff0c;快速构建起适合自身企业的专业客服知识库。 前言 在今天的快节奏商业环境中&#xff0c…

Linux shell脚本编程

一、sehll简介&#xff1a; 用户通过shell向计算机发送指令的 计算机通过shell给用户返回指令的执行结果 1.1、通过shell编程可以达到的效果 提高工作的效率 可以实现自动化 1.2、sehll脚本编写的流程 1、用vi/vim创建一个.sh的文件 2、在文件中进行开发 3、个文件赋予可执行权…

【如何使用RSA签名验签】python语言

文章目录 签名方法异步同步通知数据验签生活号响应数据验签同步响应数据验签 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能与您在此邂逅&#xff0c;真是缘分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留的…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…

idea常用问题记录

文章目录 1.ant构建报错编译错误1.1 解决办法 1.ant构建报错编译错误 Compile failed;xxx 1.1 解决办法

Python系统教程02

巩固 input()输出函数 回顾 1 、 input()函数&#xff1a; 在 input()函数输入时&#xff0c;输入的内容一定为字符串类型。 2 、条件分支语句&#xff1a; 每一个 if 语句可以看成一个个体&#xff0c;elif 和 else 都是一个 if 个体的一部分&#xff0c;每一个 if 个体 运…