ARMday7作业

实现三个按键的中断,现象和代码

do_ipr.c

#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
extern void printf(const char *fmt, ...);
unsigned int i = 0;
void do_irq(void) 
{
    //获取要处理的中断的中断号
    unsigned int irqno=GICC->IAR&0x3ff;
    switch (irqno)
    {
    case 99:
        printf("key1_intc\n");
        //清除GICD中断排队标志
        GICD->ICPENDR[3] |= (0X1<<3);
        //清除EXTI中断触发标志
        EXTI->FPR1 |= (0X1<<9);
        break;
    case 97:
        printf("key2_intc\n");
        //清除GICD中断排队标志
        GICD->ICPENDR[3] |= (0X1<<1);
        //清除EXTI中断触发标志
        EXTI->FPR1 |= (0X1<<7);
        break;
    case 98:
        printf("key3_intc\n");
        //清除GICD中断排队标志
        GICD->ICPENDR[3] |= (0X1<<2);
        //清除EXTI中断触发标志
        EXTI->FPR1 |= (0X1<<8);
        break;

    default:
        break;
    }
    //清除IAR寄存器中的中断号
    GICC->EOIR |= irqno;
}

key_inc.h

#ifndef __KEY_INC_H__
#define __KEY_INC_H__
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
 void key1_it_config();
 void key2_it_config();
 void key3_it_config();
#endif

 key_inc.c

 #include"key_inc.h"
 void key1_it_config()
 {
    //使能GPIOF外设时钟
    RCC->MP_AHB4ENSETR |= (0x1<<5);
    //将PF9设置为输入模式
    GPIOF->MODER &= (~(0x3<<18));
    //设置由PF9管脚产生EXTI9事件
    EXTI->EXTICR3 &= (~(0XFF<<8));
    EXTI->EXTICR3|= (0X05<<8);
    //通过下降沿检测EXTI9事件是否产生
    EXTI->FTSR1 |= (0x1<<9);
    //取消EXTI9中断屏蔽
    EXTI->C1IMR1 |= (0x1<<9);
    //设置EXTI9中断全局使能
    GICD->ISENABLER[3] |= (0x1<<3);
    //设置中断优先级
    GICD->IPRIORITYR[24] &= (~(0x1f<<27));
      //设置CPU0处理当前中断
    GICD->ITARGETSR[24] |= (0x1<<24);
    //设置组0中断可以被转发到GICC层
    GICD->CTRL |=0X1;
    //设置中断优先级掩码
    GICC->PMR |= (0x1f<<3);
    //设置组0中断交给指定处理器处理
    GICC->CTRL |= 0x1;
 }
  void key2_it_config()
 {
    //使能GPIOF外设时钟
    RCC->MP_AHB4ENSETR |= (0x1<<5);
    //将PF7设置为输入模式
    GPIOF->MODER &= (~(0x3<<14));
    //设置由PF7管脚产生EXTI7事件
    EXTI->EXTICR2 &= (~(0XFF<<24));
    EXTI->EXTICR2|= (0X05<<24);
    //通过下降沿检测EXTI7事件是否产生
    EXTI->FTSR1 |= (0x1<<7);
    //取消EXTI7中断屏蔽
    EXTI->C1IMR1 |= (0x1<<7);
    //设置EXTI7中断全局使能
    GICD->ISENABLER[3] |= (0x1<<1);
    //设置中断优先级
    GICD->IPRIORITYR[24] &= (~(0x1f<<11));
      //设置CPU0处理当前中断
    GICD->ITARGETSR[24] |= (0x1<<8);
    //设置组0中断可以被转发到GICC层
    GICD->CTRL |=0X1;
    //设置中断优先级掩码
    GICC->PMR |= (0x1f<<3);
    //设置组0中断交给指定处理器处理
    GICC->CTRL |= 0x1;
 }
 
   void key3_it_config()
 {
     //使能GPIOF外设时钟
    RCC->MP_AHB4ENSETR |= (0x1<<5);
    //将PF8设置为输入模式
    GPIOF->MODER &= (~(0x3<<16));
    //设置由PF8管脚产生EXTI8事件
    EXTI->EXTICR3 &= (~(0XFF));
    EXTI->EXTICR3|= (0X05);
    //通过下降沿检测EXTI8事件是否产生
    EXTI->FTSR1 |= (0x1<<8);
    //取消EXTI8中断屏蔽
    EXTI->C1IMR1 |= (0x1<<8);
    //设置EXTI8中断全局使能
    GICD->ISENABLER[3] |= (0x1<<2);
    //设置中断优先级
    GICD->IPRIORITYR[24] &= (~(0x1f<<19));
      //设置CPU0处理当前中断
    GICD->ITARGETSR[24] |= (0x1<<16);
    //设置组0中断可以被转发到GICC层
    GICD->CTRL |=0X1;
    //设置中断优先级掩码
    GICC->PMR |= (0x1f<<3);
    //设置组0中断交给指定处理器处理
    GICC->CTRL |= 0x1;
 }

 现象

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

离线数仓(八)【DWD 层开发】

前言 1、DWD 层开发 DWD层设计要点&#xff1a; &#xff08;1&#xff09;DWD层的设计依据是维度建模理论&#xff08;主体是事务型事实表&#xff08;选择业务过程 -> 声明粒度 -> 确定维度 -> 确定事实&#xff09;&#xff0c;另外两种周期型快照事实表和累积型…

信号处理--情绪分类数据集DEAP预处理(python版)

关于 DEAP数据集是一个常用的情绪分类公共数据&#xff0c;在日常研究中经常被使用到。如何合理地预处理DEAP数据集&#xff0c;对于后端任务的成功与否&#xff0c;非常重要。本文主要介绍DEAP数据集的预处理流程。 工具 图片来源&#xff1a;DEAP: A Dataset for Emotion A…

如何备考2025年AMC8竞赛?吃透2000-2024年600道真题(免费送题

最近有家长朋友问我&#xff0c;现在有哪些类似于奥数的比赛可以参加&#xff1f;我的建议可以关注下AMC8的竞赛&#xff0c;类似于国内的奥数&#xff0c;但是其难度要比国内的奥数低一些&#xff0c;而且比赛门槛更低&#xff0c;考试也更方便。比赛的题目尤其是应用题比较有…

肿瘤靶向肽 iRGD peptide环肽 1392278-76-0 c(CRGDKGPDC)

RGD环肽 c(CRGDKGPDC)&#xff0c;iRGD peptide 1392278-76-0 结 构 式&#xff1a; H2N-CRGDKGPDC-OH(Disulfide Bridge:C1-C9) H2N-Cys-Arg-Gly-Asp-Lys-Gly-Pro-Asp-Cys-COOH(Disulfide Bridge:Cys1-Cys9) 氨基酸个数&#xff1a; 9 C35H57N13O14S2 平均分子量:…

聊聊低代码产品的应用场景

随着数字化转型的不断深入&#xff0c;企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下&#xff0c;低代码产品应运而生&#xff0c;成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

企业计算机服务器中了rmallox勒索病毒怎么办,rmallox勒索病毒解密流程步骤

在网络技术飞速发展的时代&#xff0c;越来越多的企业离不开网络办公&#xff0c;通过网络开展各项工作业务成为企业的常态&#xff0c;这也被国外众多黑客组织盯上的原因&#xff0c;近期&#xff0c;网络勒索病毒攻击的事件频发&#xff0c;越来越多的企业开始重视企业数据安…

Rust语言中Regex正则表达式,匹配和查找替换等

官方仓库&#xff1a;https://crates.io/crates/regex 文档地址&#xff1a;regex - Rust github仓库地址&#xff1a;GitHub - rust-lang/regex: An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear tim…

leetcode:2138. 将字符串拆分为若干长度为 k 的组(python3解法)

难度&#xff1a;简单 字符串 s 可以按下述步骤划分为若干长度为 k 的组&#xff1a; 第一组由字符串中的前 k 个字符组成&#xff0c;第二组由接下来的 k 个字符串组成&#xff0c;依此类推。每个字符都能够成为 某一个 组的一部分。对于最后一组&#xff0c;如果字符串剩下的…

【SAP2000】在框架结构中应用分布式面板荷载Applying Distributed Panel Loads to Frame Structures

在框架结构中应用分布式面板荷载 Applying Distributed Panel Loads to Frame Structures 使用"Uniform to Frame"选项,可以简单地将荷载用于更多样化的情况。 With the “Uniform to Frame” option, loads can be easily used for a greater diversity of situat…

如何高效阅读嵌入式代码

大家好&#xff0c;今天给大家介绍如何高效阅读嵌入式代码&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 高效阅读嵌入式代码需要一些技巧和实践经验。以下是一些建议&#xff…

Sublime 彻底解决中文乱码

1. 按ctrl&#xff0c;打开Console&#xff0c;输入如下代码&#xff1a; import urllib.request,os; pf Package Control.sublime-package; ipp sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHand…

excel统计分析——单向分组资料的协方差分析

参考资料&#xff1a;生物统计学 单向分组资料是具有一个协变量的单因素方差分析资料。 操作案例如下&#xff1a; 1、对x和y进行方差分析 由方差分析表可知&#xff1a;4种处理间&#xff0c;x存在显著差异&#xff0c;而y在处理间差异不显著。需要进行协方差分析&#xff0c…

【C语言】linux内核pci_iomap

一、pci_iomap /** pci_iomap 是一个用于映射 PCI 设备的 BAR&#xff08;Base Address Register&#xff0c;基地址寄存器&#xff09;的函数。* 此函数返回指向内存映射 IO 的指针&#xff0c;用于直接访问 PCI 设备的内存或 I/O 空间。* * 参数:* dev - 指向pci_dev结构的指…

IP如何异地共享文件?

【天联】 组网由于操作简单、跨平台应用、无网络要求、独创的安全加速方案等原因&#xff0c;被几十万用户广泛应用&#xff0c;解决了各行业客户的远程连接需求。采用穿透技术&#xff0c;简单易用&#xff0c;不需要在硬件设备中端口映射即可实现远程访问。 异地共享文件 在…

使用GO对PostgreSQL进行有意思的多线程压测

前言 针对PostgreSQL进行压缩&#xff0c;有很多相关的工具。有同学又要问了&#xff0c;为何还要再搞一个&#xff1f;比如&#xff0c;pgbench, sysbench之类的&#xff0c;已经很强大了。是的&#xff0c;它们都很强大。但有时候&#xff0c;在一些特殊的场景&#xff0c;可…

功能强大的国外商业PHP在线教育系统LMS源码/直播课程系统

功能强大的国外商业PHP在线教育系统LMS/在线教育市场源码/直播课程系统 Proacademy是在线教育一体化的解决方案&#xff0c;用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程&#xff0c;现场课程&#xff0c;测验等等&#xff0c;并有一个…

单链表交叉分离,运用头插法,尾插法(算法库应用)

原文博客链接:单链表分离(头插法和尾插法的结合,理解指针变换)_3.对任务1或者2中创建的某一个单链表{a1,b1,a2,b2,...,an,bn},编写一个算法将-CSDN博客 函数实现: /************************************************** 函数名:separate_LinkList 功 能: 把一个链表,交叉新建…

如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。

对于刚刚使用jupyter的新手来说&#xff0c;经常不知道如何在其中使用新建的虚拟环境内核&#xff0c;同时&#xff0c;对于默认安装的jupyter&#xff0c;使用jupyter notebook命令启动 jupyter 以后往往默认是C盘的启动路径&#xff0c;如下图所示&#xff0c;这篇教程将告诉…

HBase的Python API操作(happybase)

一、Windows下安装Python库&#xff1a;happyhbase pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple 二、 开启HBase的Thrift服务 想要使用Python API连接HBase&#xff0c;需要开启HBase的Thrift服务。所以&#xff0c;在Linux服务器上&#xff0c;执行…

软考数据库

目录 分值分布1. 事务管理1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别&#xff1a; 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 SQL语言 分值分布 1. 事务管理 1.…