2024.4.16

 三个按键的中断

do_irq.c

#include "mykey.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;}//清除IAR寄存器中保存的中断号GICC->EOIR = irqno;
}

 main.c

#include "mykey.h"extern void printf(const char *fmt, ...);//手动封装延时函数void delay_ms(int ms)
{int i,j;for( i= 0;i<ms;i++){for(j=0;j<2000;j++){}}}int main(){//按键中断初始化
key1_init_config();
key2_init_config();
key3_init_config();while(1)
{printf("main func\n");delay_ms(1000);}return 0; }

 mykey.c

#include "mykey.h"void key1_init_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);// 全局使能99号中断GICD->ISENABLER[3] |= (0x1<<3);// 设置99号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<27));//最高优先级// 设置99号中断的目标处理器GICD->ITARGETSR[24] |= (0x1<<24);// 允许组0中断被转发到GICC层GICD->CTRL |= 0x1;// 设置中断优先级掩码GICC->PMR |= (0x1f<<3);// 允许组0中断被转发给处理器GICC->CTRL |= 0x1;}
void key2_init_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);// 全局使能97号中断GICD->ISENABLER[3] |= (0x1<<1);// 设置97号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<11));//最高优先级// 设置99号中断的目标处理器GICD->ITARGETSR[24] |= (0x1<<8);// 允许组0中断被转发到GICC层GICD->CTRL |= 0x1;// 设置中断优先级掩码GICC->PMR |= (0x1f<<3);// 允许组0中断被转发给处理器GICC->CTRL |= 0x1;
}void key3_init_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);// 全局使能98号中断GICD->ISENABLER[3] |= (0x1<<2);// 设置97号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<19));//最高优先级// 设置99号中断的目标处理器GICD->ITARGETSR[24] |= (0x1<<16);// 允许组0中断被转发到GICC层GICD->CTRL |= 0x1;// 设置中断优先级掩码GICC->PMR |= (0x1f<<3);// 允许组0中断被转发给处理器GICC->CTRL |= 0x1;
}

 

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

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

相关文章

jenkins构建微信小程序并展示二维码

测试小程序的过程中&#xff0c;很多都是在回头和前端开发说一句&#xff0c;兄弟帮我打一个测试版本的测试码&#xff0c;开发有时间的情况下还好&#xff0c;就直接协助了&#xff0c;但是很多时候他们只修复了其中几个bug&#xff0c;其他需要修复的bug代码正在编写&#xf…

健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)

健身管理小程序目录 基于微信开发健身管理小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序端&#xff1a; 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码…

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义&#xff1a;定义一个算法族&#xff0c;并分别封装起来。策略让算法的变化独立于它的客户&#xff08;这样就可在不修改上下文代码或其他策略的情况下…

八、OOP面向对象程序设计(三)

1、面向对象的内容 1)封装 什么是封装? 封装就是将属性私有化,提供公有的方法访问私有属性。 做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。 如:private String name; public …

前端三件套学习笔记(持更)

HTML CSS 1、HTML&#xff0c;CSS&#xff0c;JS区别 HTML--结构 CSS--表现 JavaScript--行为 2、HTML5 中新增 1&#xff09;语义化标签 <header>、<main>页面主要内容、<aside>侧边栏、<footer>、<nav>、<article> 加载页面一块…

Redis 缓存预热、预热数据选取策略、缓存保温、性能边界

缓存预热 热点数据预热&#xff1a;根据业务分析或统计数据&#xff0c;确定热点数据&#xff08;经常被访问的数据&#xff09;&#xff0c;并将其提前加载到Redis缓存中。可以根据访问频率、访问量或其他业务指标来确定热点数据。定时预热&#xff1a;可以设置定时任务&…

灯光3-静态光照烘焙技术

UNITY静态光照烘焙技术是一种用于实现高质量光照效果的技术。它通过在场景中预计算光照信息&#xff0c;并将其存储在纹理或数据结构中&#xff0c;以便在运行时进行渲染。这种技术可以提供更真实的光照效果&#xff0c;并且可以在较低的运行时成本下实现。 在UNITY中&#xf…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程&#xff1a;​​​​​​QT初体验&#xff1a;手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程&#xff08;添加QSerialPort模块&#xff09;_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

纯golang开发的mqtt server

Mochi-MQTT Server github地址&#xff1a;https://github.com/mochi-mqtt/server Mochi-MQTT 是一个完全兼容的、可嵌入的高性能 Go MQTT v5&#xff08;以及 v3.1.1&#xff09;中间件/服务器。 Mochi MQTT 是一个完全兼容 MQTT v5 的可嵌入的中间件/服务器&#xff0c;完…

【C语言】每日一题,快速提升(3)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 题目&#xff1a;杨辉三角 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1 ……......... 解答&#xff1a; 按照题设的场景&#xff0c;能发现数字规律为&#xff1…

Flink学习(六)-容错处理

前言 Flink 是通过状态快照实现容错处理 一、State Backends 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。 一种基于 RocksDB 内嵌 key/value 存储将其工作状态保存在磁盘上&#x…

【MogDB】在ORACLE和MogDB中查看存储过程出参游标数据的方式

一、前言 使用ORACLE作为数据库的应用软件中&#xff0c;偶尔会遇到使用游标作为出参的存储过程&#xff0c;这种存储过程迁移到MogDB并不需要进行改造&#xff0c;但是在开发这样的存储过程时&#xff0c;开发人员偶尔会想要在数据库中测试执行一下&#xff0c;看看游标中的数…

向量数据库中的向量是什么?

在向量数据库中&#xff0c;向量通常指的是高维空间中的点或方向&#xff0c;它们由一组数值组成&#xff0c;这些数值表示该点在空间中的位置或方向。在机器学习和人工智能领域&#xff0c;向量经常用于表示各种类型的数据&#xff0c;如文本、图像、音频等。 具体来说&#x…

项目5-博客系统1(准备工作+博客列表+博客详情页)

1.创建项目 导入以下依赖 2.项目介绍 使⽤SSM框架实现⼀个简单的博客系统 共5个页面 2.1 前端页面展示 2.1.1 用户登录 2.1.2 博客发表页 2.1.3 博客编辑页 2.1.4 博客列表页 2.1.5博客详情页 2.2 功能描述: ⽤⼾登录成功后, 可以查看所有⼈的博客. 点击 <<查看全⽂…

Big Data and Cognitive Computing (IF=3.7) 计算机/大数据/人工智能期刊投稿

Special Issue: Artificial Cognitive Systems for Computer Vision 欢迎计算机/大数据/人工智能/计算机视觉相关工作的投稿&#xff01; 影响因子3.7&#xff0c;截止时间2024年12月31日 投稿咨询&#xff1a;lqyan18fudan.edu.cn 投稿网址&#xff1a;https://www.mdpi.com/j…

2024 计算机毕业设计之SpringBoot+Vue项目合集(源码+L文+PPT)

各位朋友大家好&#xff0c;有幸与屏幕前你们相识&#xff0c;博主现已经搬砖9年&#xff0c;趁着头发还充裕&#xff0c;希望给大家提供一些编程领域的帮助&#xff0c;深知计算机毕业生这个阶段的崩溃与闹心&#xff0c;让我们共同交流进步。 博主给大家列举了项目合集&#…

如何在PPT中获得网页般的互动效果

如何在PPT中获得网页般的互动效果 效果可以看视频 PPT中插入网页有互动效果 当然了&#xff0c;获得网页般的互动效果&#xff0c;最简单的方法就是在 PPT 中插入网页呀。 那么如何插入呢&#xff1f; 接下来为你讲解如何获得&#xff08;此方法在 PowerPoint中行得通&#…

coredump-x: sanitizer编译出现segmentfault

https://bugzilla.redhat.com/show_bug.cgi?id=1669117 https://github.com/dmlc/xgboost/pull/8878 从上面两个链接,看着已经解决了,需要使用新版本的gcc。 https://github.com/dmlc/xgboost/issues/8863 Using only ubsan works. Using only thread sanitizer works. (wi…

本地环境连接虚拟机中的数据库,虚拟机的防火墙允许从本地主机访问虚拟机的MySQL端口

要让本地环境可以访问虚拟机中的数据库&#xff0c;您可以按照以下步骤进行设置&#xff1a; 配置虚拟机网络&#xff1a; 确保虚拟机的网络设置为桥接模式&#xff0c;这样虚拟机可以获得与本地网络相同的IP地址段。 查看虚拟机IP地址&#xff1a; 在虚拟机中运行以下命令来查…