STM32mp157aaa按键中断实验

news2025/2/24 21:07:37

效果图:

源码:

#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()
{
    // 使能EXTI
    EXTI->EXTICR3 &= (~(0XFF << 8));
    EXTI->EXTICR3 |= (0X5 << 8);

    // 使能EXTI
    EXTI->EXTICR2 &= (~(0XFF << 24));
    EXTI->EXTICR2 |= (0X5 << 24);

    // 使能EXTI
    EXTI->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);

    // 中断分配给哪个cpu
    GICD->ITARGETSR[24] &= (~(0X3 << 24));
    GICD->ITARGETSR[24] |= (0X1 << 24);

    // 中断分配给哪个cpu
    GICD->ITARGETSR[24] &= (~(0X3 << 8));
    GICD->ITARGETSR[24] |= (0X1 << 8);

    // 中断分配给哪个cpu
    GICD->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.coloradmin.cn/o/1886755.html

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

相关文章

2025年U.S.News世界大学排名前200榜单

近日&#xff0c;U.S. News公布了2025全球最佳院校排名&#xff0c;作为公认的四大世界高校排行榜&#xff0c;该排名主要围绕着学术声誉、学术成果等&#xff0c;因此备受访问学者、联合培养博士生及博士后申请者们青睐&#xff0c;知识人网小编特作介绍并发布排名前200的榜单…

CentOS 7 搭建rsyslog日志服务器

CentOS 7 搭建rsyslog日志服务器 前言一、IP地址及主机名称规划1.修改主机名 二、配置rsyslog日志服务器1.安装rsyslog服务2.编辑/etc/rsyslog.conf 文件3.启动并启用rsyslog服务4.验证端口是否侦听 三、在rsyslog日志服务器上配置firewalld防火墙四、配置rsyslog日志客户端1.编…

DSPy:变革式大模型应用开发

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

Git使用——首次创建本地仓库、配置、初始化、关联远程仓库

1、安装 Git软件 官网&#xff1a;git-scm.com 有时候官网打不开&#xff0c;这里留存个之前下载过的安装包&#xff1a; https://download.csdn.net/download/weixin_43908355/89502977 2、配置本地仓库 在准备建仓库的文件夹里&#xff0c;右键点击&#xff1a;Git Bash …

把 AI 人机炼成高玩,游戏 AI 技术实践指南,码住!

今天&#xff0c;为大家深入浅出地讲明白上亚运的经典 IP《梦三国 2》&#xff0c;到底应用了哪些来自网易数智的 AI 黑科技。看完你就会觉得&#xff1a;原来做 AI&#xff0c;我也行&#xff01; 方案概述 游戏作为 AI 落地最佳的试验田&#xff0c;近年来已经产生了多个极具…

maven构建断网springboot

maven构建断网springboot 我的依赖仓库&#xff08;本地电脑&#xff0c;记住常用的那几个&#xff09;org.springframework.boot下的 spring-boot-starter-parent spring-boot-starter-web /Users/lin/Documents/repo 使用maven进行创建空白项目 在pom.xml中补全parent类…

【文档+源码+调试讲解】科研经费管理系统

目 录 目 录 摘 要 ABSTRACT 1 绪论 1.1 课题背景 1.2 研究现状 1.3 研究内容 2 系统开发环境 2.1 vue技术 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 2.5 SSM框架技术 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1…

51单片机嵌入式开发:STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…

echarts的折线图实现部分虚线部分实线

场景&#xff1a; 折线图一般都是实线为准&#xff0c;但是由于最后一个数据是预测。所以想要实现最后一段为虚线。 效果图&#xff1a; 具体实现&#xff1a; series:[{name: "销售总金额",type: "line",smooth: true,barWidth: 10,stack: Total,itemSty…

【机器学习】人工智能与气候变化:利用深度学习与机器学习算法预测和缓解环境影响

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f525;引言 1.1 背景介绍 1.2 人工智能与机器学习的崛起 1.3 本文内容概述 &#x1f528;气候变化的挑战 2.1 现今气候变化带来的影响和挑战 2.2 引发关注的气候变化趋势和数据 &#x1f916;人工智能…

甘肃香酥可口的烤花卷:味蕾的新宠

在美食的世界里&#xff0c;总有一些创新的美味能够让人眼前一亮&#xff0c;烤花卷便是其中之一。烤花卷&#xff0c;这甘肃一独特的美食&#xff0c;将传统花卷的柔软与烤制的香脆完美结合&#xff0c;为我们的味蕾带来了全新的体验。从外观上看&#xff0c;烤花卷呈现出诱人…

人脉社群平台微信小程序系统源码

&#x1f31f;【解锁人脉新纪元&#xff1a;探索人脉社群平台小程序】&#x1f31f; &#x1f680;【开篇&#xff1a;为什么我们需要人脉社群平台小程序&#xff1f;】&#x1f680; 在这个快节奏的时代&#xff0c;人脉不再是简单的名片交换&#xff0c;而是通往成功与机遇…

Elasticsearch:Runtime fields - 运行时字段(一)

运行时字段&#xff08;runtime fields&#xff09;是在查询时计算的字段。运行时字段使你能够&#xff1a; 向现有文档添加字段而无需重新索引数据开始处理数据而无需了解其结构在查询时覆盖索引字段返回的值定义用于特定用途的字段而无需修改底层架构 你可以像访问其他任何…

d3dcompiler_47.dll缺失怎么修复?d3dcompiler_47.dll修复使用说明

d3dcompiler_47.dll是一个重要的系统文件&#xff0c;属于MicrosoftWindows操作系统中Direct3D的一部分&#xff0c;它主要负责处理在Windows上运行的应用程序和游戏中的3D图形编程。这个DLL文件是“DirectX”的一项组成部分&#xff0c;DirectX是一套核心技术&#xff0c;用于…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验13 静态路由配置错误导致的路由环路问题

一、实验目的 1.验证静态路由配置错误导致的路由环路问题&#xff1b; 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络拓扑&#xff1b; 2.验证路由环路。 四、实验…

嵌套组合请求对象的校验与全局捕捉

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

S7-1500PLC通过工艺对象实现V90总线伺服定位控制(105报文)

S7-1500PLC通过工艺对象实现V90总线伺服定位控制,伺服驱动器工作在速度模式,S7-1500PLC工作在位置模式,具体控制原理框图,可以参考下面文章链接: 1、S7-1200PLC和V90总线伺服位置控制 S7-1200PLC和V90总线伺服通过工艺对象实现定位控制(标准报文3应用)_v90伺服 报文3 设…

聊聊etsy平台,一个年入百万的项目

聊聊etsy平台&#xff0c;一个年入百万的项目 什么是etsy,这是怎样一个平台&#xff0c;怎样盈利的&#xff1f;相信现在大家满脑子都是这些疑问。 这个平台也是无意间一个学员提到的&#xff0c;据说他朋友靠这个平台年赚好几百万。苦于门槛太高&#xff0c;他也做不了。今天…

微软预计年底实现实时语音界面;硅基智能开源 AI 数字人交互平台 Duix丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

基于matlab的控制系统串联校正—相位超前校正问题实例

1.问题 为了改进闭环系统性能&#xff0c;可以采用串联校正&#xff0c;这里用相位超前校正&#xff0c;即 α 常取 0.07~0.2 &#xff0c;选择适当的 α 与 τ &#xff0c; 要使 针对新的开环传递函数 G ’ K (S)Gc(S) G(S) H(S) &#xff0c;画出开环 Bode 图&#xff…