ARM 中断控制灯

news/2024/7/14 18:22:09/文章来源:https://blog.csdn.net/2401_83238851/article/details/139129166

do_irq_c

#include"key_it.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://按键1中断//进行中断处理printf("do_key1_int\n");//清除GICD中的中断排队标志GICD->ICPENDR[3] |= (0x1<<3);//清除EXTI中的事件挂起标志EXTI->FPR1 |= (0x1<<9);break;case 98://按键2中断//进行中断处理printf("do_key2_int\n");//清除GICD中的中断排队标志GICD->ICPENDR[3] |= (0x1<<2);//清除EXTI中的事件挂起标志EXTI->FPR1 |= (0x1<<8);break;case 97://按键3中断//进行中断处理printf("do_key3_int\n");//清除GICD中的中断排队标志GICD->ICPENDR[3] |= (0x1);//清除EXTI中的事件挂起标志EXTI->FPR1 |= (0x1<<7);break;}//清除IAR保存的中断号GICC->EOIR = irqno;
}

key_it.c

#include"key_it.h"
#include"gpio.h"//按键1中的中断配置
void key1_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);
}
//按键2中的中断配置
void key2_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);//设置使能98号中断的优先级GICD->IPRIORITYR[24] &= (~(0X1f<<19));//设置98号中断目标处理器GICD->ITARGETSR[24] |= (0X1<<16);//全局使能组0中断被转发到GICC层GICD->CTRL |= (0X1<<0);//设置中断优先级掩码GICC->PMR &= (~(0X1f<<3));GICC->PMR |= (0X6<<3);//全局使能组0中断转发给处理器GICC->CTRL |= (0X1);
}
//按键3中的中断配置
void key3_config()
{//使能GPIOF外设时钟RCC->MP_AHB4ENSETR |= (0x1<<5);//将PF7设置为输入GPIOF->MODER &= (~(0X3<<14));//设置PF7生成EXTI7事件EXTI->EXTICR2 &= (~(0xff<<24));EXTI->EXTICR2 |= (0X5<<24);//设置下降沿检测EXTI7事件EXTI->FTSR1 |= (0X1<<7);//取消EXTI7的屏蔽EXTI->C1IMR1 |= (0X1<<7);//使能97号中断GICD->ISENABLER[3] |= (0x1<<1);//设置使能97号中断的优先级GICD->IPRIORITYR[24] &= (~(0X1f<<11));//设置97号中断目标处理器GICD->ITARGETSR[24] |= (0X1<<8);//全局使能组0中断被转发到GICC层GICD->CTRL |= (0X1<<0);//设置中断优先级掩码GICC->PMR &= (~(0x1f<<3));GICC->PMR |= (0X5<<3);//全局使能组0中断转发给处理器GICC->CTRL |= (0X1<<0);
}

key_it.h

#ifndef _KEY_IT_H_
#define _KEY_IT_H_#include "gpio.h"#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gic.h"void key1_config();
void key2_config();
void key3_config();
#endif

main.c

#include"key_it.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++){}}
}void LED_init()
{RCC_AHB4_ENSETR |= (0x3<<4);gpio_init_t init= {OUTPUT,PP,LOW,NO_PUPD};//LED初始化hal_gpio_init(GPIOE,&init,GPIO_PIN_10); //led1hal_gpio_init(GPIOF,&init,GPIO_PIN_10);//led2hal_gpio_init(GPIOE,&init,GPIO_PIN_8);//led3
}int main()
{LED_init();key1_config();key2_config();key3_config();while(1){printf("do_main\n");delay_ms(1000);}return 0 ;}

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

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

相关文章

el-image本地图片不显示,提示加载失败

问题描述&#xff1a;el-image使用本地图片不显示&#xff0c;提示加载失败。 <el-image src"../../assets/img/value.png"></el-image> 解决方法&#xff1a;src用里面加个require&#xff0c;注意给 src 属性加: <el-image :src"require(../..…

sysbench压测mysql性能测试命令和报告

sysbench压测mysql性能测试命令和报告 一、安装sysbench工具二、创建测试数据库三、基于sysbench构造测试表和测试数据四、数据库性能测试1、数据库读写性能测试2、数据库读性能测试3、数据库删除性能测试4、数据库更新索引字段性能测5、数据库更新非索引字段性能测试6、数据库…

使用PySpark构建和评估逻辑回归模型预测质量是否合格

使用PySpark构建和评估逻辑回归模型预测质量是否合格 随着数据量的不断增长&#xff0c;传统的数据处理工具已经难以满足需求。PySpark作为大数据处理框架Apache Spark的Python API&#xff0c;为大规模数据处理和机器学习提供了强有力的支持。本文将详细介绍如何使用PySpark进…

必看项目|多维度揭示心力衰竭患者生存关键因素(生存分析、统计检验、随机森林)

1.项目背景 心力衰竭是一种严重的公共卫生问题,影响着全球数百万人的生活质量和寿命,心力衰竭的病因复杂多样,既有个体生理因素的影响,也受到环境和社会因素的制约,个体的生活方式、饮食结构和医疗状况在很大程度上决定了其心力衰竭的风险。在现代社会,随着生活水平的提…

Token验证流程、代码示例、优缺点和安全策略,一文告诉你。

Token和Session都是用于身份验证和授权的机制&#xff0c;而且Token渐渐成为主流&#xff0c;有不少小伙伴对token的认识不全&#xff0c;这里给大家分享下。 一、什么是Token Token是一种用于身份验证和授权的令牌&#xff0c;通常用于在客户端和服务器之间进行安全的通信。…

[C][符号]详细讲解

目录 1.算术操作符2.接续符和转义符 \1.续行符使用2.转义 3.单引号和双引号4.逻辑运算符5.位运算符6.移位操作符7. --操作8.条件操作符9.逗号表达式10.操作符的属性 1.算术操作符 算术操作符&#xff1a; - * / %除了%操作符以外&#xff0c;其他的几个操作符可以作用于整数和…

从这些原理中,读懂迅软DSE加密系统

加密技术是保护信息安全的系统&#xff0c;通过对原始数据进行加密&#xff0c;使得未经授权的人无法读取这些信息。 一、迅软DSE加密系统干什么用的&#xff1f; ★保护隐私&#xff1a;加密确保个人、机构的敏感信息在传输和存储过程中不被未授权的人访问。 ★防止数据泄露…

json/excel文件上传下载工具方法汇总

文章目录 浏览器下载json文件浏览器下载excel文件【Workbook】浏览器导入json文件【ObjectMapper】浏览器导入excel文件【Workbook】ResourceLoader读取类路径下单个jsonResourceLoader读取类路径下所有json文件 浏览器下载json文件 Operation(summary "设备模型导出(带分…

计算机图形学入门03:二维基本变换

变换(Transformation)可分为模型(Model)变换和视图(Viewing)变换。在3D虚拟场景中相机的移动和旋转&#xff0c;角色人物动画都需要变换&#xff0c;用来描述物体运动。将三维世界投影变换到2D屏幕上成像出来&#xff0c;也需要变换。 1.缩放变换 缩放(Scale)变换&#xff1a; …

Echarts圆环图偏移后 中心文字居中对齐实现

像上图中这样圆环图并不在div的中间时&#xff0c;中心的文本需要居中展示 一开始用left百分比但数据一旦变长或变短就会偏移 像这样 实在是太不美观了 所以我们这里使用动态的left通过文本的长度来计算 /*** 计算文本宽度* param {String|Number} text* param {String} font*…

【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA

文章目录 一、内容介绍二、内页插图三、作者简介四、前言/序言五、目录 一、内容介绍 《AI数据处理实战108招&#xff1a;ChatGPTExcelVBA》通过7个专题内容、108个实用技巧&#xff0c;讲解了如何运用ChatGPT结合办公软件Excel和VBA代码实现AI办公智能化、高效化。随书附赠了…

代码随想录算法训练营第36期DAY43

DAY43 343整数拆分 注意&#xff1a;当几个数的数值相近&#xff0c;乘积才会尽可能地大&#xff08;好想&#xff1a;数一大一小&#xff0c;最大当然是自己乘以自己&#xff09; 代码随想录官方题解&#xff1a; class Solution {public: int integerBreak(int n) { …

【Vue】input框自动聚焦且输入验证码后跳至下一位

场景&#xff1a;PC端 样式&#xff1a; <div class"verification-code-input"><input v-model"code[index]" v-for"(_, index) in 5" :key"index" type"text" maxlength"1" input"handleInput(i…

Centos7时区设置及手动修改时间

一、修改系统时区 1、查看时区命令 timedatectl 2、设置时区命令 #下面将时区设置为上海时区 timedatectl set-timezone Asia/Shanghai 3、查看时区看一下新时区有没有生效 timedatectl 二、手动修改系统时间 修改系统时间 date -s "2023-12-25 16:05:10" 查…

【易错题】数据可视化基础练习题(30道选择题)#CDA Level 1

本文整理了数据可视化基础知识相关的练习题&#xff0c;共30道&#xff0c;适用于想巩固数据可视化知识的同学&#xff0c;也可作为备考CDA一级的补充习题。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-可视化&#xff09;。 1&#xff09; 2&#xff09; 3&…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前&#xff0c;AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展&#xff0c;基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上&#xff0c;多个领域展现出了前所未有的能力。无论是自然语言处理、…

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

工控一体机7寸显示器电容触摸屏(YA131607JK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA131607JK产品介绍&#xff1a; YA131607JK 搭载 Android10 主流操作系统&#xff0c;具有系统版本更高、占用内存更低、运行效率…

HTML-JavaWeb

目录 1.标题排版 2.标题样式 ​编辑 ​编辑 小结 3.超链接 4.正文排版 ​编辑​编辑​编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…

linux开发之设备树五、设备树描述中断实践

设备树是基于设备总线模型的&#xff08;platform&#xff09; 1、添加节点 假设中断引脚为&#xff1a;GPIO0_B5 下面使用设备树来描述它 1、写节点&#xff0c;起节点名字 这里用了ft5x06的触摸芯片&#xff0c;然后I2C的地址为38 2、为节点添加属性 首先添加compatible…