ARM-day9作业

main.c:

#include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init();    //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){//保证主程序不结束}return 0;}

key_it.c:

#include"key_it.h"void key3_it_config()
{RCC->MP_AHB4ENSETR |= (0x1<<5);GPIOF->MODER &= (~(0x3<<16));EXTI->EXTICR3 &= (~(0xFF)<<0);EXTI->EXTICR3 |= (0x5<<0);EXTI->FTSR1 |= (0x1<<8);	EXTI->C1IMR1 |= (0x1<<8);	GICD->ISENABLER[3] |= (0x1<<2);GICD->IPRIORITYR[24] &= (~(0x1F<<19));	GICD->ITARGETSR[24] &= (~(0x3<<16));GICD->ITARGETSR[24] |= (0x1<<16);
}void key_it_config()
{//RCC使能GPIOF时钟RCC->MP_AHB4ENSETR |= (0x1<<5);//设置PF9、PF7、PF8 GPIO输入//PF9GPIOF->MODER &= (~(0x3<<18));//PF8GPIOF->MODER &= (~(0x3<<16));//PF7GPIOF->MODER &= (~(0x3<<14));	//设置PF9、PF7、PF8产生EXIT事件 EXTI_EXTICRx//PF7EXTI->EXTICR2 &= (~(0xFF)<<24);EXTI->EXTICR2 |= (0x5<<24);//PF8EXTI->EXTICR3 &= (~(0xFF)<<0);EXTI->EXTICR3 |= (0x5<<0);//PF7EXTI->EXTICR3 &= (~(0xFF)<<8);EXTI->EXTICR3 |= (0x5<<8);//设置事件触发方式为下降沿触发EXTI_FTSR1//PF7EXTI->FTSR1 |= (0x1<<7);	//PF8EXTI->FTSR1 |= (0x1<<8);	//PF9EXTI->FTSR1 |= (0x1<<9);//设置EXTI事件触发不屏蔽EXTI_IMR1//PF7EXTI->C1IMR1 |= (0x1<<7);	//PF8EXTI->C1IMR1 |= (0x1<<8);	//PF9EXTI->C1IMR1 |= (0x1<<9);//使能中断能转发到特定的CPU接口层GICD_ISENABLERx//PF7 97号中断GICD->ISENABLER[3] |= (0x1<<1);//PF8 98号中断GICD->ISENABLER[3] |= (0x1<<2);//PF9 99号中断GICD->ISENABLER[3] |= (0x1<<3);	//GICD_ISENABLERx设置中断优先级//PF7GICD->IPRIORITYR[24] &= (~(0x1F<<11));//PF8GICD->IPRIORITYR[24] &= (~(0x1F<<19));	//PF7GICD->IPRIORITYR[24] &= (~(0x1F<<27));//设置当前中断被转发到那一个cpu处理GICD_ITARGETSRx//PF7 97中断GICD->ITARGETSR[24] &= (~(0x3<<8));GICD->ITARGETSR[24] |= (0x1<<8);//PF8 98中断GICD->ITARGETSR[24] &= (~(0x3<<16));GICD->ITARGETSR[24] |= (0x1<<16);//PF9 99中断GICD->ITARGETSR[24] &= (~(0x3<<24));GICD->ITARGETSR[24] |= (0x1<<24);//使能组0转发中断GICD_CTLRGICD->CTRL |= 0x1;//设置中断优先级掩码GICC_CTLRGICC->PMR |= (0x1F<<3);//使能CPU可以处理组0转发的中断GICC_CTLRGICC->CTRL |= 0x1;}//延时函数
void deley(int ms)
{int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++);}
}//GPIO初始化
void all_led_init()
{//RCC使能RCC->MP_AHB4ENSETR |= (0x3<<4);//设置PE10、PF10、PE8为输出GPIOE->MODER &= (~(0x3<<20));GPIOE->MODER |= (0x1<<20);GPIOF->MODER &= (~(0x3<<20));GPIOF->MODER |= (0x1<<20);GPIOE->MODER &= (~(0x3<<16));GPIOE->MODER |= (0x1<<16);//设置推挽输出GPIOE->OTYPER &= (~(0x1<<10));GPIOF->OTYPER &= (~(0x1<<10));GPIOE->OTYPER &= (~(0x1<<8));//设置三个管脚低速输出GPIOE->OSPEEDR &= (~(0x3<<20));GPIOF->OSPEEDR &= (~(0x3<<20));GPIOE->OSPEEDR &= (~(0x3<<16));//设置三个管脚输出时无上拉电阻和下拉电阻GPIOE->PUPDR &=(~(0x3<<20));GPIOF->PUPDR &=(~(0x3<<20));GPIOE->PUPDR &=(~(0x3<<16));
}//风扇初始化
void fs_init()
{//RCC使能RCC->MP_AHB4ENSETR |= (0x1<<4);//设置PE9为输出GPIOE->MODER &= (~(0x3<<18));GPIOE->MODER |= (0x1<<18);//设置推挽输出GPIOE->OTYPER &= (~(0x1<<9));//设置管脚低速输出GPIOE->OSPEEDR &= (~(0x3<<18));//设置管脚输出时无上拉电阻和下拉电阻GPIOE->PUPDR &=(~(0x3<<18));
}//蜂鸣器初始化
void fmq_init()
{//RCC使能RCC->MP_AHB4ENSETR |= (0x1<<1);//设置PB6为输出GPIOB->MODER &= (~(0x3<<12));GPIOB->MODER |= (0x1<<12);//设置推挽输出GPIOB->OTYPER &= (~(0x1<<6));//设置管脚低速输出GPIOB->OSPEEDR &= (~(0x3<<12));//设置管脚输出时无上拉电阻和下拉电阻GPIOB->PUPDR &=(~(0x3<<12));
}

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://key1{//按键1中断处理printf("KEY1 INT\n");if((GPIOE->ODR==(GPIOE->ODR&(~(0x1<<10))))&&(GPIOF->ODR==(GPIOF->ODR&(~(0x1<<10))))&&(GPIOE->ODR==(GPIOE->ODR&(~(0x1<<8))))){GPIOE->ODR |= (0x1<<10);GPIOF->ODR |= (0x1<<10);GPIOE->ODR |= (0x1<<8);}else if((GPIOE->ODR==(GPIOE->ODR|(0x1<<10)))&&(GPIOF->ODR==(GPIOF->ODR|(0x1<<10)))&&(GPIOE->ODR==(GPIOE->ODR|(0x1<<8)))){GPIOE->ODR &= (~(0x1<<10));				GPIOF->ODR &= (~(0x1<<10));				GPIOE->ODR &= (~(0x1<<8));				}//清除挂起中断标志位GICD_ICPENDRxGICD->ICPENDR[3] |= (0x1<<3);//清除中断触发标志位EXTI_FPR1EXTI->FPR1 |= (0x1<<9);break;}case 97://key2{//按键2中断处理printf("KEY2 INT\n");if(GPIOB->ODR==(GPIOB->ODR&(~(0x1<<6)))){GPIOB->ODR |= (0x1<<6);}else if(GPIOB->ODR==(GPIOB->ODR|(0x1<<6))){GPIOB->ODR &= (~(0x1<<6));}//清除挂起中断标志位GICD_ICPENDRxGICD->ICPENDR[3] |= (0x1<<1);//清除中断触发标志位EXTI_FPR1EXTI->FPR1 |= (0x1<<7);break;}case 98://key3{//按键3中断处理printf("KEY3 INT\n");if(GPIOE->ODR==(GPIOE->ODR&(~(0x1<<9)))){GPIOE->ODR |= (0x1<<9);}else if(GPIOE->ODR==(GPIOE->ODR|(0x1<<9))){GPIOE->ODR &= (~(0x1<<9));}//清除挂起中断标志位GICD_ICPENDRxGICD->ICPENDR[3] |= (0x1<<2);//清除中断触发标志位EXTI_FPR1EXTI->FPR1 |= (0x1<<8);break;}}//清除处理完的中断号GICC_EOIRGICC->EOIR=irqno;}

key_it.h:

#ifndef __KEY_IT_H__
#define __KEY_IT_H__
#include"stm32mp1xx_rcc.h"
#include"stm32mp1xx_gpio.h"
#include"stm32mp1xx_exti.h"
#include"stm32mp1xx_gic.h"void key_it_config();
void key3_it_config();
void deley(int ms);
void all_led_init();
void fs_init();
void fmq_init();#endif

现象:

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

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

相关文章

SpringBoot-黑马程序员-学习笔记(四)

40.业务层Service的快速开发 1.写业务层接口并且继承IService类&#xff0c;泛型是对应的实体类 2.写实现类&#xff0c;除了和之前一样的实现Service类外&#xff0c;还要继承ServiceImpl类&#xff0c;泛型有2个&#xff0c;第一个是对应的Dao层&#xff0c;第2个是对应的实…

c++视觉---中值滤波处理

中值滤波&#xff08;Median Filter&#xff09;是一种常用的非线性平滑滤波方法&#xff0c;用于去除图像中的噪声。它不像线性滤波&#xff08;如均值滤波或高斯滤波&#xff09;那样使用权重来计算平均值或加权平均值&#xff0c;而是选择滤波窗口内的像素值中的中间值作为输…

LeetCode862 和至少为k的最短子数组

题目&#xff1a; 解析&#xff1a; 1、先构造前缀和数组 2、单调队列存放滑动窗口&#xff0c;目的求Sj-Si >k的情况下&#xff0c;窗口最小。 代码&#xff1a; class Solution {public int shortestSubarray(int[] nums, int k) {int n nums.length;long[] sums new …

读书笔记-《ON JAVA 中文版》-摘要26[第二十三章 注解]

文章目录 第二十三章 注解1. 基本语法1.1 基本语法1.2 定义注解1.3 元注解 2. 编写注解处理器2.1 编写注解处理器2.2 注解元素2.3 默认值限制 3. 使用javac处理注解4. 基于注解的单元测试5. 本章小结 第二十三章 注解 注解&#xff08;也被称为元数据&#xff09;为我们在代码…

Edge浏览器下载文件被保存为 .crdownload 文件的问题小记

问题 近期使用Edge浏览器下载文件时&#xff0c;文件都被保存为 .crdownload 格式的文件了&#xff0c;不确定从哪个版本开始的。除非下载未完成导致文件不完整&#xff0c;否则不会被保存为 .crdownload 格式的文件&#xff1b;实际上文件已完成了下载&#xff0c;且手工修改…

天锐绿盾加密软件——企业数据防泄密-CAD图纸、文档、源代码加密管理系统@德人合科技

天锐绿盾是一款专门为企业提供数据防泄密和文档加密管理的软件。该软件通过加密技术保护企业的核心数据&#xff0c;防止数据泄露和侵权行为&#xff0c;同时提供了全方位的文档加密管理系统&#xff0c;实现了对企业数据的安全保障和有效管理。 PC访问地址&#xff1a; isite…

基于保密信息学科平台系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 教师信息管理 学科动态管理 文献资源管理 征订目录管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步…

# Web server failed to start. Port 9793 was already in use

Web server failed to start. Port 9793 was already in use. 文章目录 Web server failed to start. Port 9793 was already in use.报错描述报错原因解决方法Spring Boot 修改默认端口号关闭占用某一端口号的进程关闭该进程 报错描述 Springboot项目启动控制台报错 Error st…

黄金票据与白银票据

文章目录 黄金票据与白银票据1. 背景2. 具体实现2.1 Kerberos协议认证流程 3. 黄金票据3.1 条件3.2 适用场景3.3 利用方式 4. 白银票据4.1 条件4.2 适用场景4.3 利用方式 5. 金票和银票的区别5.1 获取的权限不同5.2 认证流程不同5.3 加密方式不同 6. 经典面试题6.1 什么是黄金票…

【opencv】windows10下opencv4.8.0-cuda C++版本源码编译教程

【opencv】windows10下opencv4.8.0-cuda C版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】windows10下opencv4.8.0-cuda C版本源码编译教程前言准备工具cuda/cudnncmakeopencv4.8.0opencv_contrib CMake编译VS2019编…

JVM CMS和G1执行过程比较

CMS CMS&#xff08;Concurrent Mark Sweep&#xff09;收集器是一种以获取最短回收停顿时间为目标的收集器。由于大部分 Java 应用主要集中在互联网网站以及基于浏览器的 B/S 系统的服务端&#xff0c;这类应用通常会较为关注服务的响应速度&#xff0c;希望系统的停顿时间尽…

Python in Visual Studio Code 2023年10月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展于 2023 年 10 月发布&#xff01; 此版本包括以下公告&#xff1a; Python 调试器扩展更新弃用 Python 3.7 支持Pylint 扩展更换时的 Lint 选项Mypy 扩展报告的范围和守护程序模式G…

后端解决跨域(极速版)

header(Access-Control-Allow-Origin: *); header(Access-Control-Allow-Methods:*); 代表接收全部的请求&#xff0c;"POST,GET"//允许访问的方式 指定域&#xff0c;如http://172.20.0.206//宝塔的域名&#xff0c;注意不是&#xff1a;http://wang.jingyi.icu等…

一文图解Golang管道Channel

在 Go 语言发布之前&#xff0c;很少有语言从底层为并发原语提供支持。大多数语言还是支持共享和内存访问同步到 CSP 的消息传递方法。Go 语言算是最早将 CSP 原则纳入其核心的语言之一。内存访问同步的方式并不是不好&#xff0c;只是在高并发的场景下有时候难以正确的使用&am…

【移植代码】matlab.engine报错、numpy+mkl安装、Qt platform plugin报错总结

文章目录 numpy报错numpy安装PyQt5报错matlab.engine无法加载确认配置版本进行配置 matlab文件路径缺失vscode无法debug3.7以下版本总结 今天的任务是复现师姐的代码&#xff0c;代码在服务器的环境下可以跑&#xff0c;而我要做的&#xff0c;就是将环境和源码配置好&#xff…

JavaScript使用类-模态窗口

**上节课我们为这个项目获取了一些DOM元素&#xff0c;现在我们可以继续&#xff1b;**这个模态窗口有一个hidden类&#xff0c;这个类上文我们讲了&#xff0c;他的display为none&#xff1b;如果我们去除这个hidden的话&#xff0c;就可以让这个模态窗口展现出来。如下 cons…

yolov5加关键点回归

文章目录 一、数据1&#xff09;数据准备2&#xff09;标注文件说明 二、基于yolov5-face 修改自己的yolov5加关键点回归1、dataloader,py2、augmentations.py3、loss.py4、yolo.py 一、数据 1&#xff09;数据准备 1、手动创建文件夹: yolov5-face-master/data/widerface/tr…

【postgresql】

看到group by 1&#xff0c;2 和 order by 1&#xff0c; 2。看不懂&#xff0c;google&#xff0c;搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” mean? 大概意思就是&#xff0c;group by&#xff0c; order by 后面跟数字&#xff0c;指的是 selec…

git命令笔记

git命令笔记 前言&#xff1a;git对于软件开发和协作的重要性不言而喻&#xff0c;在企业开发中&#xff0c;git命令和linux命令的使用同样重要。作为开发者&#xff0c;需要牢记并熟练使用常见的git命令 git工作流程图 命令如下&#xff1a; clone&#xff08;克隆&#xf…

虹科方案|国庆出游季,古建筑振动监测让历史古迹不再受损

全文导读&#xff1a; 国庆长假即将到来&#xff0c;各位小伙伴是不是都做好了出游计划呢&#xff1f;今年中秋、国庆“双节”连休八天&#xff0c;多地预计游客接待量将创下新高&#xff0c;而各地的名胜古迹更是人流爆满。迎接游客的同时&#xff0c;如何保障历史古迹不因巨大…