arm 外部中断

news/2024/4/29 2:29:47/文章来源:https://blog.csdn.net/weixin_52304504/article/details/136994313

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.luyixian.cn/news_show_1026769.aspx

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

相关文章

C++自主点餐系统

一、 题目 设计一个自助点餐系统&#xff0c;方便顾客自己点餐&#xff0c;并提供对餐厅销售情况的统计和管理功能。 二、 业务流程图 三、 系统功能结构图 四、 类的设计 五、 程序代码与说明 头文件1. SystemMap.h #pragma once #ifndef SYSTEMMAP #define SYSTEMMAP #in…

【八股】泛型

泛型存在的意义&#xff1f; 为了使相同的代码适用于多种数据类型&#xff0c;也就是代码复用。 参数类型上下限限制 <?> 无限制 <? extends E> 声明了类型的上界&#xff0c;表示参数类型可以是他或他的子类。 <? super E> 声明了类型的下界&#xf…

深度学习中的随机种子random_seed

解释 由于模型中的参数初始化例如权重参数如下图&#xff0c;就是随机初始化的&#xff0c;为了能够更好的得到论文中提到效果&#xff0c;可以设置随机种子&#xff0c;从而减少算法结果的随机性&#xff0c;使其接近于原始结果。 设置了随机种子&#xff0c;产生的随机数都…

python、execl数据分析(数据描述)

一 python 1.各函数 1.1python库的安装与导入 #pip install os#pip install matplotlib#pip install seaborn#pip install scikit-learn#pip install scipy#修 改 工 作 目 录import osos.getcwd () # 查看当前工作环境os.chdir( F :\my course\database ) # 修改工作环境o…

linux之Haproxy

介绍 haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面&#xff0c;而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 下载Haproxy yum install haproxy -y 开启服务 systemctl start haproxy 配…

如何在CentOS使用Docker搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

困难重重!如何将超导量子计算机完好无损地搬进数据中心

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨浪味仙 沛贤 深度好文&#xff1a;3700字丨18分钟阅读 如何把超导量子计算机部署到数据中心&#xff1f;数据中心运营商和量子公司面临着以前没有见过的重重难关。 首…

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R &#xff0c;输入 compmgmt.msc 2、找到Sql Server配置管理器

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好&#xff0c;我是淘小白~ 首先&#xff0c;感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新&#xff0c;此次版本更新修改增加了一些内容&#xff1a; 1、自定义多条指令&#xff0c;软件自动判断指令条数&#xff0c;进行输入 2、增加谷歌浏览多账号轮询&#xf…

阿里云4核8G云服务器优惠价格表,多配置报价

阿里云4核8G云服务器优惠价格955元一年&#xff0c;云服务器ECS通用算力型u1实例。2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff…

面向对象的学习

封装 //用来描述一类事物的类&#xff0c;专业叫做&#xff1a;javabean类 //在javabean类是不写main方法的//一个java文件中可以定义多个类&#xff0c;且只能一个类是public修饰&#xff0c;而且public修饰的类名必须成为代码的文件名 ://在类中一般无需指定初始化值 存在默…

智慧光伏:企业无纸化办公

随着科技的快速发展&#xff0c;光伏技术不仅成为推动绿色能源革命的重要力量&#xff0c;更在企业办公环境中扮演起引领无纸化办公的重要角色。智慧光伏不仅为企业提供了清洁、可持续的能源&#xff0c;更通过智能化的管理方式&#xff0c;推动企业向无纸化办公转型&#xff0…

鸿蒙APP开发:【ArkTS类库多线程】TaskPool和Worker的对比(2)

askPool运作机制 图1 TaskPool运作机制示意图 TaskPool支持开发者在主线程封装任务抛给任务队列&#xff0c;系统选择合适的工作线程&#xff0c;进行任务的分发及执行&#xff0c;再将结果返回给主线程。接口直观易用&#xff0c;支持任务的执行、取消。工作线程数量上限为4。…

基于Python实现多功能翻译助手(下)

为了将上述步骤中的功能增强与扩展具体化为代码&#xff0c;我们将实现翻译历史记录功能、翻译选项配置以及UI的改进。 翻译历史记录功能 import json # 假设有一个用于存储历史记录的json文件 HISTORY_FILE translation_history.json # 初始化历史记录列表 translati…

Element-Plus下拉菜单边框去除教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

python中函数那点事

1.求一个十进制的数值的二进制的0、1的个数 。 2.实现一个用户管理系统(要求使用容器保存数据)[{name: xxx, pass: xxx, ... ... },{},{}] 3.求1~100之间不能被3整除的数之和 4.给定一个正整数N,找出1到N(含)之间所有质数的总和 5.计算PI(公式如下:PI4(1-1/31/5-1/71/9-1......…

简单了解原型模式

什么是原型模式 区别于单例模式&#xff0c;原型模式的一个类可以有多个实例化的对象。 原型模式通过拷贝来产生新的对象&#xff0c;而不是new&#xff0c;并且可以根据自己的需求修改对象的属性。 实现Cloneable接口实现拷贝 而拷贝又分为浅拷贝和深拷贝&#xff0c;两者在…

Codigger开发者篇:开启全新的开发体验(二)

在数字化浪潮中&#xff0c;开发者们始终在追求更加高效、便捷的开发工具与环境。Codigger&#xff0c;作为新一代开发、运营、使用私人应用的分布式操作系统&#xff0c;正是为这些追求者们量身打造的利器&#xff0c;Codigger是一个跨时代的颠覆式的创新。今天&#xff0c;我…

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

JAVA------基础篇

java基础 1.JDK JDK :java development kit JRE&#xff1a;java runtime environment JDK包含JRE java跨平台&#xff1a;因为java程序运行依赖虚拟机&#xff0c;虚拟机需要有对应操作系统的版本&#xff0c;而jre中有虚拟机。 当你想要在Linux系统下运行&#xff0c;则需要…