当前位置: 首页 > news >正文

ARM:作业3

按键中断代码编写

代码:

key_it.h

#ifndef  __KEY_IT_H__
#define __KEY_IT_H__#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gic.h"void key1_it_config();
void key2_it_config();
void key3_it_config();#endif

key_it.c

#include"key_it.h"void key1_it_config()
{//1.设置GPIOF时钟使能RCC->MP_AHB4ENSETR |= (0X1<<5);// 2.将PF9管脚设置为输入GPIOF->MODER &= (~(0x3<<18));//3.设置由PF9产生EXTI9事件EXTI->EXTICR3 &= (~(0XFF<<8));EXTI->EXTICR3 |= (0x05<<8);// 4.设置EXTI9事件的检测方式为下降沿检测EXTI->FTSR1 |= (0x1<<9);// 5.允许中断不屏蔽,可以被转发到GICEXTI->C1IMR1 |= (0x1<<9);// 6.允许EXTI9(99号)中断被保存在组0中GICD->ISENABLER[3]|= (0x1<<3);// 7.设置99号中断优先级GICD->IPRIORITYR[24] &= (~(0x1f<<27));GICD->IPRIORITYR[24] |= (0x0<<27);// 8.设置99号中断可以被CPU0处理GICD->ITARGETSR[24] &= (~(0x3<<24));GICD->ITARGETSR[24] |= (0x1<<24);//9.允许99号中断被转发到CPU接口层GICD->CTRL |= 0x1;//10.设置中断优先级掩码GICC->PMR |= (0x1f<<3);//11.允许中断被转发给CPU处理GICC->CTRL |=0x1;
}
void key2_it_config()
{//1.设置GPIOF时钟使能RCC->MP_AHB4ENSETR |= (0X1 << 5);// 2.将PF7管脚设置为输入GPIOF->MODER &= (~(0x3 << 14));//3.设置由PF7产生EXTI7事件EXTI->EXTICR2 &= (~(0XFF << 24));EXTI->EXTICR2 |= (0x05 << 24);// 4.设置EXTI7事件的检测方式为下降沿检测EXTI->FTSR1 |= (0x1 << 7);// 5.允许中断不屏蔽,可以被转发到GICEXTI->C1IMR1 |= (0x1 << 7);// 6.允许EXTI7(97号)中断被保存在组0中GICD->ISENABLER[3] |= (0x1 << 1);// 7.设置97号中断优先级GICD->IPRIORITYR[24] &= (~(0x1f << 11));GICD->IPRIORITYR[24] |= (0x0 << 11);// 8.设置97号中断可以被CPU0处理GICD->ITARGETSR[24] &= (~(0x3 << 8));GICD->ITARGETSR[24] |= (0x1 << 8);//9.允许97号中断被转发到CPU接口层GICD->CTRL |= 0x1;//10.设置中断优先级掩码GICC->PMR |= (0x1f << 3);//11.允许中断被转发给CPU处理GICC->CTRL |= 0x1;
}
void key3_it_config()
{//1.设置GPIOF时钟使能RCC->MP_AHB4ENSETR |= (0X1 << 5);// 2.将PF8管脚设置为输入GPIOF->MODER &= (~(0x3 << 16));//3.设置由PF8产生EXTI8事件EXTI->EXTICR3 &= (~(0XFF << 0));EXTI->EXTICR3 |= (0x05 << 0);// 4.设置EXTI8事件的检测方式为下降沿检测EXTI->FTSR1 |= (0x1 << 8);// 5.允许中断不屏蔽,可以被转发到GICEXTI->C1IMR1 |= (0x1 << 8);// 6.允许EXTI8(98号)中断被保存在组0中 98/32=3...2GICD->ISENABLER[3] |= (0x1 << 2);// 7.设置98号中断优先级   98/4=24...2     2*8+3=19GICD->IPRIORITYR[24] &= (~(0x1f << 19));GICD->IPRIORITYR[24] |= (0x0 << 19);// 8.设置98号中断可以被CPU0处理 98/4=24...2GICD->ITARGETSR[24] &= (~(0x3 << 16));GICD->ITARGETSR[24] |= (0x1 << 16);//9.允许97号中断被转发到CPU接口层GICD->CTRL |= 0x1;//10.设置中断优先级掩码GICC->PMR |= (0x1f << 3);//11.允许中断被转发给CPU处理GICC->CTRL |= 0x1;
}

do_irq.c

#include "key_it.h"   
extern void printf(const char *fmt, ...);
unsigned int i = 0;
void do_irq(void) 
{//获取中断号,根据中断号的不同进行不同的中断处理int irqno;irqno=GICC->IAR&0x3ff;switch(irqno){case 99:                           printf("key1 int\n");//清除exti中断标志位EXTI->FPR1 |=(0x1 << 3);//清除GICD中断标志位GICD->ICPENDR[3] = (0x1 << 3);break;case 97:printf("key2 int\n");// 清除exti中断标志位EXTI->FPR1 |= (0x1 << 7);// 清除GICD中断标志位GICD->ICPENDR[3] = (0x1 << 1);break;case 98:printf("key3 int\n");// 清除exti中断标志位EXTI->FPR1 |= (0x1 << 8);// 清除GICD中断标志位GICD->ICPENDR[3] = (0x1 << 2);break;}//清除IAR寄存器的值GICC->EOIR = irqno;
}

main.c

#include "key_it.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();//现象是发送一个a串口工具打印一个bwhile(1){printf("main func\n");delay(2000);}return 0;}

运行结果:

相关文章:

ARM:作业3

按键中断代码编写 代码: key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__#include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gic.h"void key1_it_config(); voi…...

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 相关其它博客工程源代码下载其它资料下载 前言 本项目基于Keras框架&#xff0c;引入CNN进行模型训练&#xff0c;采用Dropout梯度…...

*上位机的定义

上位机是指在分布式控制系统中&#xff0c;负责监控和控制下位机&#xff08;也称为远程终端设备&#xff09;的计算机或者计算机网络。它通常是一个高性能的计算设备&#xff0c;运行着特定的监控软件&#xff0c;用于实时监测、控制和管理下位机设备。 上位机负责与各个下位…...

架构LAMP

目录 1.什么是LAMP 2.LAMP组成及作用 3.搭建Apache httpd服务 4.编译安装mysqld 服务 5.编译安装PHP 解析环境 6.安装论坛 1.什么是LAMP LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务…...

vue实现浏览器不同分辨率下的不同样式,css的媒体查询与js判断当前浏览器宽度

前言&#xff1a; 实现实现浏览器不同分辨率下的不同样式的方法很多&#xff0c;这里整理两种&#xff0c;1个是css的媒体查询来实现&#xff0c;另一个是js判断当前浏览器的宽度&#xff0c;然后动态给他添加不同的class名&#xff0c;或者动态用style修改样式&#xff0c;添加…...

CentOS7 安装包 MariaDB 10.4.x

CentOS7 安装包 MariaDB 10.4.x 统一 MariaDB安装包 https://www.alipan.com/s/fvLg3gN7LPX 提取码: nh81 打开「阿里云盘」...

js中箭头函数简单介绍

1.箭头函数是 ES6 中新增的一种函数定义方式&#xff0c; 简单举例为 var nameA function(a){return a} 可以用箭头函数简化为 var nameA a >a; 返回的是你输入的值 比如 nameA(5) 返回的就是5 nameA(2) 返回的就是2 以上两个表达的含义是一样的。nameA为名字 2.…...

分布式ID服务实践

背景 分布式场景下需要一个全局 ID 来标识唯一性&#xff0c;比如在单数据库时通过表唯一主键即可实现唯一 ID&#xff0c;分库分表时就需要全局唯一 ID。 业务对唯一 ID 的要求如下&#xff1a; 全局唯一性 不能出现重复的 ID 号&#xff0c;既然是唯一标识&#xff0c;这…...

YOLOv8改进 | 2023主干篇 | 利用RT-DETR特征提取网络PPHGNetV2改进YOLOv8(超级轻量化精度更高)

一、本文介绍 本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv8的主干&#xff0c;RT-DETR是今年由百度推出的第一款实时的ViT模型&#xff0c;其在实时检测的领域上号称是打败了YOLO系列&#xff0c;其利用两个主干一个是HGNet一个是ResNet&#xff0c;其中HGNet就是我们…...

C现代方法(第26章)笔记——<stdarg.h>、<stdlib.h>和<time.h>标准库

文章目录 第26章 <stdarg.h>、<stdlib.h>和<time.h>标准库26.1 <stdarg.h>: 可变参数26.1.1 调用带有可变参数列表的函数26.1.2 v...printf函数26.1.3 v...scanf函数(C99) 26.2 <stdlib.h>: 通用的实用工具26.2.1 数值转换函数26.2.1.1 测试数值…...

CCKS2023-面向金融领域的主体事件检测-亚军方案分享

赛题分析 大赛地址 https://tianchi.aliyun.com/competition/entrance/532098/introduction?spma2c22.12281925.0.0.52b97137bpVnmh 任务描述 主体事件检测是语言文本分析和金融领域智能应用的重要任务之一&#xff0c;如在金融风控领域往往会对公司主体进行风险事件的检测…...

Linux下通过find找文件---通过修改时间查找(-mtime)

通过man手册查找和-mtime选项相关的内容 man find | grep -A 3 mtime # 这里简单介绍了 -mtime &#xff0c;还有一个简单的示例-mtime n Files data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretati…...

图文教程:stable-diffusion的基本使用教程 txt2img(多图)

之前我介绍了SD的安装过程&#xff0c;那么这篇将介绍怎么使用SD 使用模型 SD安装好之后&#xff0c;我们只有一个默认的模型。这个模型很难满足我们的绘图需求&#xff0c;那么有2种方法。 1是自己训练一个模型&#xff08;有门槛&#xff09;2是去网站上找一个别人练好的模…...

VisualSVN Server的安装全过程

目录 背景: 安装过程&#xff1a; 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xff1a; 步骤5&#xff1a; 安装出现的bug&#xff1a; 问题: 解决办法: 总结: 背景: VisualSVN Server 是一款免费的 SVN (Subversion) 服务器软件&#xff0c…...

Python 进阶(十六):二进制和ASCII码的转换(binascii 模块)

大家好&#xff0c;我是水滴~~ 本文详细介绍了Python中的binascii模块及其使用方法。通过binascii模块&#xff0c;我们可以方便地进行二进制和ASCII字符串之间的转换操作。文章中包含大量的示例代码&#xff0c;希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总…...

CSS Grid布局入门:从零开始创建一个网格系统

CSS Grid布局入门&#xff1a;从零开始创建一个网格系统 引言 在响应式设计日益重要的今天&#xff0c;CSS Grid布局系统是前端开发中的一次革新。它使得创建复杂、灵活的布局变得简单而直观。本教程将通过分步骤的方式&#xff0c;让你从零开始掌握CSS Grid&#xff0c;并在…...

java--Collection的遍历方式

1.迭代器概述 迭代器是用来遍历集合的专用方式(数组没有迭代器)&#xff0c;在java中迭代器是Iterator。 2.Collection集合获取迭代器的方法 3.Iterator迭代器中的常用方法 4.增强for循环 ①增强for可以用来遍历集合或数组。 ②增强for遍历集合&#xff0c;本质就是迭代器遍…...

现代雷达车载应用——第2章 汽车雷达系统原理 2.2节

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.2 汽车雷达架构 从顶层来看&#xff0c;基本的汽车雷达由发射器&#xff0c;接收器和天线组成。图2.2给出了一种简化的单通道连续波雷达结构[2]。这…...

Ajax跨域请求

最近使用js构造请求时发生了CORS跨域问题&#xff0c;mark一下 ajax跨域&#xff0c;这应该是最全的解决方案了 | Dailc的个人主页Everything about dailchttps://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.htmlAJAX - 廖雪峰的官方网站研究互联网产品和技术&#…...

python 中Windows编程一些心得

主要思路 当我们显示所有消息的信息时&#xff0c;我们可以知道Windows后台是如何传递消息给我们&#xff0c;但是并不会把所有东西写进开发文档 &#xff0c;这有一定的原因 但是 我们要自己去理解或者猜想开发者思路或者根据反馈结果来分析消息的作用&#xff0c;不然永远只…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...