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;这样就可在不修改上下文代码或其他策略的情况下…

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

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;可以设置定时任务&…

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;看看游标中的数…

项目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中行得通&#…

吴恩达llama课程笔记:第七课llama安全工具

羊驼Llama是当前最流行的开源大模型&#xff0c;其卓越的性能和广泛的应用领域使其成为业界瞩目的焦点。作为一款由Meta AI发布的开放且高效的大型基础语言模型&#xff0c;Llama拥有7B、13B和70B&#xff08;700亿&#xff09;三种版本&#xff0c;满足不同场景和需求。 吴恩…

【笔记】探索生成范式:大型语言模型在信息提取中的作用

探索生成范式&#xff1a;大型语言模型在信息提取中的作用 摘要介绍 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&am…

基于Qt的二维码生成与识别

基于Qt的二维码生成与识别 一、获取QZxing开源库 1.通过封装的QZxing开源库生成和识别二维码&#xff0c;下载地址&#xff1a;GitCode - 开发者的代码家园https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。 2.下载解压后&#xff0c;使用Qt Creator xx&#xff0…

解决npm run dev跑项目,发现node版本不匹配,怎么跑起来?【已解决】

首先问题点就是我们npm run dev 运行项目的时候发现出错&#xff0c;跑不起来&#xff0c;类型下面这种 这里的出错的原因在于我们的node版本跟项目的版本不匹配 解决办法 我这里的问题是我的版本是node14的&#xff0c;然后项目需要node20的&#xff0c;执行下面的就可以正…