STM32MP157按键中断实验

按键配置

#include "key_it.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_rcc.h"void key_it_config()
{/* RCC使能GPIOF时钟 */RCC->MP_AHB4ENSETR |= (1<<5);/* 设置PF9 PF7 PF8输入 */GPIOF->MODER &= (~(0x3 << 14));GPIOF->MODER &= (~(0x3 << 16));GPIOF->MODER &= (~(0x3 << 18));/* 设置PF9 PF7 PF8产生EXTI事件 EXTI_EXTICRx */EXTI->EXTICR2 &= ~(0xff<<24);EXTI->EXTICR2 |= (0x05<<24);EXTI->EXTICR3 &= ~(0xff);EXTI->EXTICR3 |= (0x05);EXTI->EXTICR3 &= ~(0xff<<8);EXTI->EXTICR3 |= (0x05<<8);/* 设置事件触发方式为下降沿触发EXTI_FISR1 */EXTI->FTSR1 |= (1<<7);EXTI->FTSR1 |= (1<<8);EXTI->FTSR1 |= (1<<9);/* 设置EXTI事件触发不屏蔽XITI_IMR1 */EXTI->C1IMR1 |= (1<<7);EXTI->C1IMR1 |= (1<<8);EXTI->C1IMR1 |= (1<<9);/* 使能中断能转发到特定的CPU接口层GICD_ISENABLERx */GICD->ISENABLER[3] |= (1<<3);GICD->ISENABLER[3] |= (1<<2);GICD->ISENABLER[3] |= (1<<1);/* GICD_IPPIORITYRx设置中断优先级 */GICD->IPRIORITYR[24] &= ~(0x1f<<27);GICD->IPRIORITYR[24] &= ~(0x1f<<19);GICD->IPRIORITYR[24] &= ~(0x1f<<11);/* 设置当前终端被转发到哪一个CPU处理GIC_ITARGETSRx */GICD->ITARGETSR[24] &= ~(0x03<<24);GICD->ITARGETSR[24] |= (0x01<<24);GICD->ITARGETSR[24] &= ~(0x03<<16);GICD->ITARGETSR[24] |= (0x01<<16);GICD->ITARGETSR[24] &= ~(0x03<<8);GICD->ITARGETSR[24] |= (0x01<<8);/* 使能组0转发终端GICD_CTLR */GICD->CTRL |= 0x1;/* 设置中断优先级掩码GICC_PMR */GICC->PMR |= (0x1f<<3);/* 使能CPU可以处理组0转发的终端GICC_CTLR */GICC->CTRL |= 0x1;}

中断实现

#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
#include "beep.h"#define EXTI9_IRQ 99
#define EXTI8_IRQ 98
#define EXTI7_IRQ 97extern void printf(const char *fmt, ...);
unsigned int i = 0;
void do_irq(void) 
{/* 保存终端号 */int irqno;irqno = GICC->IAR & 0x3ff;if(irqno == EXTI9_IRQ){delay(1000);if(irqno == EXTI9_IRQ){/* KEY1中断处理 */printf("KEY1 pressed!\n\r");/* 蜂鸣器 */hal_gpio_write(GPIOB, 6, !hal_gpio_read(GPIOB, 6));/* 清除挂起中断标志位GICD_ICPENDRx */GICD->ICPENDR[3] |= (1<<3);	/* 清除终端触发标志EXTI_FRR1 */EXTI->FPR1 |= (1<<9);}}else if(irqno == EXTI8_IRQ){delay(1000);if(irqno == EXTI8_IRQ){/* KEY3中断处理 */printf("KEY3 pressed!\n\r");/* 风扇 */hal_gpio_write(GPIOE, 8, !hal_gpio_read(GPIOE, 8));/* 清除挂起中断标志位GICD_ICPENDRx */GICD->ICPENDR[3] |= (1<<2);/* 清除终端触发标志EXTI_FRR1 */EXTI->FPR1 |= (1<<8);}}else if(irqno == EXTI7_IRQ){delay(1000);if(irqno == EXTI7_IRQ){/* KEY2中断处理 */printf("KEY2 pressed!\n\r");/* LED灯 */hal_gpio_write(GPIOE, 9, !hal_gpio_read(GPIOE, 9));/* 清除挂起中断标志位GICD_ICPENDRx */GICD->ICPENDR[3] |= (1<<1);/* 清除终端触发标志EXTI_FRR1 */EXTI->FPR1 |= (1<<7);}}/* 清除处理完的中断号GICC_EOIR */GICC->EOIR = irqno;}

在这里插入图片描述

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

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

相关文章

ubuntu20.04 nerf Instant-ngp (下) 复现,自建数据集,导出mesh

参考链接 Ubuntu20.04复现instant-ngp&#xff0c;自建数据集&#xff0c;导出mesh_XINYU W的博客-CSDN博客 GitHub - NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more youtube上的一个博主自建数据集 https://www.youtube.com/watch…

es6(二)——常用es6说明

ES6的系列文章目录 es6&#xff08;一&#xff09;——var和let和const的区别 文章目录 ES6的系列文章目录一、变量的结构赋值1.数组的结构赋值2.对象的结构赋值 二、模板字符串三、扩展运算符1.字符串的使用2.数组的使用 四、箭头函数1.普通函数的定义2.箭头函数的定义3.箭头…

Windows 10 - 适用于各种服务(Redis、MySQL)的文件迁移到其他目录后,导致的各种服务找不到的问题 - 注册服务 - 关闭服务 - 重启服务

目录 一、MySQL 服务找不到问题二、Redis 服务找不到问题Tips 三、PostgreSQL 服务找不到问题参考链接 必须要用管理员打开 doc 窗口&#xff0c;然后才进行以下操作。 通用命令 先关闭 xxx 服务 sc query xxx服务名&#xff0c;如 redis 服务 sc query redis sc query 删除…

uniapp app获取keystore等一系列常用数据

https://blog.csdn.net/deepdfhy/article/details/88698492 参考文章 一、获取安卓证书keystore的SHA1和SHA256值 参数上面引用链接 window r : $ cmd $ D: 进入D盘 $ keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore 项目名称.ke…

[GXYCTF2019]BabyUpload - 文件上传+绕过(后缀文件类型文件内容.htaccess)

[GXYCTF2019]BabyUpload 解题流程 解题流程 1、上传一句话&#xff0c;提示“后缀不允许ph” 2、修改后缀为jpg&#xff0c;提示“上传类型也太露骨了吧&#xff01;” 3、修改类型为image/jpeg&#xff0c;提示“诶&#xff0c;别蒙我啊&#xff0c;这标志明显还是php啊” 4、…

【Linux 安装Kibana 及 Es 分词器安装】

一、客户端Kibana安装 Kibana是一个开源分析和可视化平台&#xff0c;旨在与Elasticsearch协同工作。参考文档 1. 下载并解压缩Kibana 下载路径 选择的版本是和 ElasticSearch 对应&#xff08;7.17.3&#xff09; 下载后上传到Linux 系统中&#xff0c;并放在 /root/ 下&a…

Linux编译FFmpeg

Linux编译FFmpeg 1. 下载FFmpeg源码 FFmpeg源码下载地址&#xff1a;http://ffmpeg.org/download.html 在下面选择版本 2. 解压并创建生成目录 tar xvf ffmpeg-snapshot.tar.bz2 // 解压下载的FFmpeg源码 makedir /root/ffmpeg // 创建生成目录3. 编译FFmpeg 进入FF…

Transformer模型 | 基于Spatial-Temporal Transformer的城市交通流预测

交通预测已成为智能交通系统的核心组成部分。然而,由于交通流的高度非线性特征和动态的时空依赖性,及时准确的交通预测,尤其是长时交通流预测仍然是一个开放性的挑战。在这篇文章中,作者提出了一种新的时空Transformer网络(STTNs)模型,该模型联合利用了动态有向的空间依…

centos安装redis教程

centos安装redis教程 安装的版本为centos7.9下的redis3.2.100版本 1.下载地址 Index of /releases/ 使用xftp将redis传上去。 2.解压 tar -zxvf 文件名.tar.gz 3.安装 首先&#xff0c;确保系统已经安装了GCC编译器和make工具。可以使用以下命令进行安装&#xff1a; sudo y…

arm_按键中断控制LED、蜂鸣器、风扇

arm_按键中断控制LED、蜂鸣器、风扇 功能函数中断处理函数 功能函数 #include "led.h"void led_set() {// 使能rccRCC->MP_AHB4ENSETR | (0x01 << 4);// 设置输出GPIOE->MODER & (~(0x03 << 20));GPIOE->MODER | (0x1 << 20);// 设置…

HDLbits:Exams/ece241 2013 q4

本题是一个实际的应用问题&#xff0c;一个水库&#xff0c;有三个传感器S1、S2、S3提供输入&#xff0c;经过控制电路&#xff0c;四个输出给到四个流量阀。也就是说&#xff0c;本题想让我们根据水位去控制流量阀。 问题的关键在于把什么抽象成state&#xff0c;答案是&…

配置XP虚拟机和Win 10宿主机互相ping通

文章目录 一、关闭虚机和宿主机的防火墙1、关闭虚拟机的防火墙1.1方式一1.2方式二 2、关闭宿主机的防火墙 二、设置XP和宿主机VMnet8的IP地址、网关和DNS1、获取VMWare的虚拟网络配置信息2、设置XP的VMnet8的IP地址、网关和DNS3、设置宿主机VMnet8的IP地址、网关和DNS 三、获取…

一款新的webshell管理工具

Alien 项目简介 语言 C# .NET Framework V4.8 功能 File Manager &#xff08;可显示图片&#xff0c; 可SearchFile&#xff09; 虚拟终端 数据库 注册表 监控 截图 系统信息 项目描述 一句话木马 一句话木马是在渗透测试中用来控制服务器的工具 强大之处在于木…

使用telnet+nc工具测试网络连通性

背景&#xff1a; 正常情况下使用ping命令即可测试网络的连通性&#xff0c;但如果做了内网穿透(端口转发)&#xff0c;则需要指定网络端口&#xff0c;此时ping命令无法实现ipport的连通性测试。则可以使用telnetnc测试网络连通性。 环境&#xff1a; 两台服务器都是按照的De…

JS-树:二叉树中序遍历

文章目录 前言一、中序遍历-递归二、中序遍历-队列总结 前言 最近总结一下树的算法&#xff0c;研究树相关的知识。 一、中序遍历-递归 1、左中右 2、如下输入是&#xff1a;4 2 5 1 6 3 7 // 前序遍历const tree {val: 1,left: {val: 2,left: { val: 4, left: null, right:…

[Machine learning][Part4] 多维矩阵下的梯度下降线性预测模型的实现

目录 模型初始化信息&#xff1a; 模型实现&#xff1a; 多变量损失函数&#xff1a; 多变量梯度下降实现&#xff1a; 多变量梯度实现&#xff1a; 多变量梯度下降实现&#xff1a; 之前部分实现的梯度下降线性预测模型中的training example只有一个特征属性&#xff1a…

修改pg 连接数 --chatGPT

gpt: 要修改 PostgreSQL 数据库的连接数限制&#xff0c;您需要编辑 PostgreSQL 配置文件并更改以下两个关键参数&#xff1a;max_connections 和 shared_buffers。这些参数位于 PostgreSQL 的配置文件中。通常&#xff0c;PostgreSQL 的配置文件是 /etc/postgresql/{version}…

hive3.1核心源码思路

系列文章目录 大数据主要组件核心源码解析 文章目录 系列文章目录大数据主要组件核心源码解析 前言一、HQL转化为MR 核心思路二、核心代码1. 入口类&#xff0c;生命线2. 编译代码3. 执行代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 对大…

安装sklearn包错误解决以及 scikit-learn简介

安装sklearn包错误解决以及 scikit-learn简介 利用 pip install sklearn时出现错误 pip install sklearn Looking in indexes: https://mirrors.aliyun.com/pypi/simple/ Collecting sklearnUsing cached https://mirrors.aliyun.com/pypi/packages/b9/0e/b2a4cfaa9e12b9ca4…

MuLogin防关联浏览器帮您一键实现Facebook账号多开

导言&#xff1a; 在当今数字化时代&#xff0c;社交媒体应用程序的普及程度越来越高。Facebook作为全球最大的社交媒体平台之一&#xff0c;拥有数十亿的用户。然而&#xff0c;对于一些用户来说&#xff0c;只拥有一个Facebook账号可能无法满足他们的需求。有时&#xff0c;…