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;但是每次都要写大段工具类来搞定这事儿…

Java练手游戏--俄罗斯方块

Java基础小练手游戏项目&#xff1a;俄罗斯方块简单版 使用Java实现俄罗斯方块大概思路&#xff1a; 界面设计&#xff1a; 使用Java Swing或JavaFX创建游戏窗口和用户界面。创建一个主窗口类&#xff08;如GameFrame.java&#xff09;&#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…

蓝桥杯每日一题(Dijkstra最短路算法)

//1488最短距离 是一个多源的&#xff0c;构造一个0号点&#xff0c;到所有的源点的距离为0。以0号点为起点转换成了单源最短路。 //错误思路&#xff1a;一个点一个点地单源实现&#xff0c;小的话就更新&#xff0c;但是由于每次更新时候比较的值是以其他源点为起点的值。所…

主干网络篇 | 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…

QT GUI常用函数介绍

在 Qt GUI 模块中&#xff0c;有许多常用的函数用于处理图形用户界面相关的操作。以下是一些常用的 Qt GUI 函数介绍&#xff1a; QWidget 类函数&#xff1a; setWindowTitle(const QString &title)&#xff1a;设置窗口的标题。resize(int w, int h)&#xff1a;设置窗口…

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

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

类模板与函数模板区别

一、类模板 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体制定&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> 类 template --- 声明创建模板 typename --- 表面其后面的符号是一种数据类型&…

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

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

webpack原理之-打包流程热更新HMR

webpack打包流程&#xff1f; 1. 初始化: 启动构建&#xff0c;读取与合并配置参数&#xff0c;加载Plugin&#xff0c;实例化Compiler&#xff1b; 2. 编译: 从 entry出发&#xff0c;针对每个 Module 串行调用对应的 loader 去翻译文件的内容&#xff0c;再找到该 Module 依赖…

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

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

【python】(10)理解Python中的数据聚合和分组运算

系列文章回顾 【python】(01)初识装饰器Decorator 【python】(02)初识迭代器Iterator 【python】(03)初识生成器Generator 【python】(04)python中实现多任务并发和并行的区别 【python】(05)如何使用python中的logging模块记录日志信息 【python】(06)理解Python中的 lambda 、…