arm 外部中断

main.c:

#include"key_inc.h"
//封装延时函数
void delay(int ms)
{int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++){}}
}
int main()
{//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf("in main pro\n");delay(1000);}return 0;
}

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);// 将PF8设置为输入模式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管脚产生EXTI9事件EXTI->EXTICR3 &= (~(0XFF << 0));EXTI->EXTICR3 |= (0X05 << 0);// 通过下降沿检测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;
}

do_irq.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 98:printf("key3_intc\n");// 清除GICD中断排队标志GICD->ICPENDR[3] |= (0X1 << 2);// 清除EXTI中断触发标志EXTI->FPR1 |= (0X1 << 8);break;case 97:printf("key2_intc\n");// 清除GICD中断排队标志GICD->ICPENDR[3] |= (0X1 << 1);// 清除EXTI中断触发标志EXTI->FPR1 |= (0X1 << 7);break;default:break;}// 清除IAR寄存器中的中断号GICC->EOIR |= irqno;
}

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

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

相关文章

查看Linux系统重启的四种基本命令

目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读&#xff1a;详细分析服务器自动重启原因&#xff08;涉及Linux、Window&#xff09; 在Linux中&#xff0c;有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释&#xff1a; …

EasyPOI操作Excel从零入门

教程介绍 我们不造轮子&#xff0c;只是轮子的搬运工。&#xff08;其实最好是造轮子&#xff0c;造比别人好的轮子&#xff09;开发中经常会遇到excel的处理&#xff0c;导入导出解析等等&#xff0c;java中比较流行的用poi&#xff0c;但是每次都要写大段工具类来搞定这事儿…

【新版】系统架构设计师 - 新版架构备考索引<附2023年11月原题回忆>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 新版架构备考索引机考详情备考索引与方向&#xff08;个人观点&#xff0c;仅供参考&#xff09;总结附&#xff1a;2023年11月改版机试原题简单回忆 架构 - 新版架构备考索引 首先&#xff0c;此…

Spring 简介

1. Spring简介 1.1 Spring 核心设计思想 1.1.1 Spring 是什么&#xff1f; Spring 是包含了众多⼯具⽅法的 IoC 容器。Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;Spring ⽀持⼴泛的应⽤场景&#xff0c;它…

月之暗面Kimi代码分析能力评测

最近打算重构一下PawSQL优化引擎中的OR条件的SELECT重写优化策略的代码&#xff0c;时间有点久&#xff0c;代码有点复杂&#xff0c;看到网上对新出了KIMI评价很高。于是尝试用它来理解一下代码。上传了此优化重写的代码&#xff0c;提问&#xff1a; 第一问&#xff0c;设计…

java多线程编程面试题总结

一些最基本的基础知识就不总结了&#xff0c;参考之前写的如下几篇博客&#xff0c;阅读顺序从上到下&#xff0c;依次递进。 java 多线程 多线程概述及其三种创建方式 线程的常用方法 java 线程安全问题 三种线程同步方案 线程通信&#xff08;了解&#xff09; java 线程池…

炸裂消息,全球首创全员持股短视频平台诞生

平台简介&#xff1a;享视是国内首家基于区块链打造的共益型短视频平台&#xff0c;也是全球首家真正践行共益模式的科技型创新企业&#xff0c;计划将80%的股权免费分发和共享给平台的会员&#xff0c;共同打造一家全员持股的共益商业模式示范标杆企业。 平台愿景&#xff1a…

Spark Streaming DStream

Spark Streaming DStream DStream 即Discretized Stream&#xff0c;中文叫做离散流&#xff0c;Spark Streaming提供的一种高级抽象&#xff0c;代表了一个持续不断的数据流。 DStream可以通过输入数据源来创建&#xff0c;比如Kafka、Flume&#xff0c;也可以通过对其他DS…

主干网络篇 | YOLOv8更换主干网络之MobileNetV3

前言:Hello大家好,我是小哥谈。MobileNetV3是一种轻量级的卷积神经网络架构,用于图像分类和目标检测任务。它是MobileNet系列的第三个版本,旨在在保持高准确性的同时减少模型的计算量和参数数量。MobileNetV3引入了一些新的设计思想和技术,以提高模型的性能。其中一项重要…

【微服务】Gateway服务网关

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;微服务 ⛺️稳中求进&#xff0c;晒太阳 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响…

Windows 7 静态 IP 地址

Windows 7 静态 IP 地址 References 静态 IP 地址设置为 192.168.1.198 控制面板 -> 查看网络状态和任务 更改适配器设置 网络连接 -> 属性 TCP / IPv4 警告 - 已计划将多个默认网关用于提供单一网络 (例如 intranet 或者 Internet) 的冗余。 6.1. 关闭 redundancy VMw…

个人博客系列-后端项目-系统角色配置(8)

系统角色配置需要设置的接口 用户可以绑定多个角色&#xff0c;角色对应有多个路由权限。用户绑定角色后&#xff0c;可以访问当前角色下的各个api路由和菜单路由。 用户注册时设置用户角色修改用户角色&#xff08;同时对应用户可以访问的路由将会同步变更&#xff09;添加修…

【Linux】写个日志和再谈线程池

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;信号量和线程池 目录 &#x1f449;&#x1f3fb;日志代码Log.cppMain.cc &#x1f449;&#x1f3fb;线程池代码LockGuard.hpp(自定义互斥锁&#xff0c;进…

Spring Boot集成zxing实现生成二维码功能

1.二维码介绍 二维码QR Code(Quick Response Code) 由Denso公司于1994年9月研制的一种矩阵二维码符号&#xff0c;它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。 ZXing 一个支持在图像中解码和生成条形码(如…

【Web】NKCTF 2024 个人wp(部分)

目录 my first cms 全世界最简单的CTF attack_tacooooo 属实太菜了&#xff0c;3/4 my first cms 一眼搜版本2.2.19 CVE -CVE-2024-27622 GitHub - capture0x/CMSMadeSimple 访问/admin/login.php 爆出弱口令&#xff0c;后台登录 admin Admin123 Extensions > User D…

鸿蒙实战开发-使用关系型数据库实现对账单的增、删、改、查

介绍 本Codelab以记账为例&#xff0c;使用关系型数据库的相关接口实现了对账单的增、删、改、查操作。实现效果如图所示&#xff1a; 相关概念 关系型数据库&#xff1a;基于关系模型来管理数据的数据库&#xff0c;提供了增、删、改、查等接口&#xff0c;也可运行输入的SQ…

Mac电脑高清媒体播放器:Movist Pro for mac下载

Movist Pro for mac是一款专为Mac操作系统设计的高清媒体播放器&#xff0c;支持多种常见的媒体格式&#xff0c;包括MKV、AVI、MP4等&#xff0c;能够流畅播放高清视频和音频文件。Movist Pro具有强大的解码能力和优化的渲染引擎&#xff0c;让您享受到更清晰、更流畅的观影体…

Matlab|【免费】基于数据驱动的模型预测控制电力系统机组组合优化

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《Feature-Driven Economic Improvement for Network-Constrained Unit Commitment: A Closed-Loop Predict-and-Optimize Framework》&#xff0c;程序主要做的是一个基于数据驱动的电力系统机…

51单片机学习笔记——LED闪烁和流水灯

任务分析 首先要知道LED闪烁主要是怎么工作的&#xff0c;闪烁亮灭自然是一下为高一下为低&#xff0c;亮灭的频率则需要延时来进行控制。 上节已经知道了如何点亮那延时如何做呢首先先编写主框架 这样是否可以通过循环将LED灯一直循环闪烁。 以为while一直在循环所以其实是可…

[Java基础揉碎]final关键字

目录 介绍 在某些情况下&#xff0c;程序员可能有以下需求&#xff0c;就会使用到final final注意事项和讨论细节 1) final修饰的属性又叫常量&#xff0c;一般用XX_XX_XX来命名 2) final修饰的属性在定义时&#xff0c;必须赋初值&#xff0c;并且以后不能再修改&#…