ARMday7
VID_20240322_203313
1.思维导图
2.main.c
#include"key_inc.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();while(1){printf("in main pro\n");delay(1000);}return 0;
}
3.key_inc.c
#include"key_inc.h"void key1_it_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);//设置EXTI9中断全局使能GICD->ISENABLER[3] |= (0x1<<3);//设置中断优先级GICD->IPRIORITYR[24] &= (~(0x1f<<27));//设置CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<24);//设置组0中断可以被转发到GICC层GICD->CTRL |=0X1;//设置中断优先级掩码GICC->PMR |= (0x1f<<3);//设置组0中断交给指定处理器处理GICC->CTRL |= 0x1;}void key2_it_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);//设置EXTI7中断全局使能GICD->ISENABLER[3] |= (0x1<<1);//设置中断优先级GICD->IPRIORITYR[24] &= (~(0x1f<<11));//设置CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<8);//设置组0中断可以被转发到GICC层GICD->CTRL |=0X1;//设置中断优先级掩码GICC->PMR |= (0x1f<<3);//设置组0中断交给指定处理器处理GICC->CTRL |= 0x1;}void key3_it_config(){//使能GPIOF外设时钟//RCC->MP_AHB4ENSETR |= (0x1<<5);//将PF8设置为输入模式GPIOF->MODER &= (~(0x3<<16));//设置由PF8管脚产生EXTI9事件EXTI->EXTICR3 &= (~(0XFF));EXTI->EXTICR3|= (0X05);//通过下降沿检测EXTI8事件是否产生EXTI->FTSR1 |= (0x1<<8);//取消EXTI8中断屏蔽EXTI->C1IMR1 |= (0x1<<8);//设置EXTI8中断全局使能GICD->ISENABLER[3] |= (0x1<<2);//设置中断优先级GICD->IPRIORITYR[24] &= (~(0x1f<<19));//设置CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<16);//设置组0中断可以被转发到GICC层GICD->CTRL |=0X1;//设置中断优先级掩码GICC->PMR |= (0x1f<<3);//设置组0中断交给指定处理器处理GICC->CTRL |= 0x1;}
4.do_irq.c
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
extern void printf(const char *fmt, ...);
unsigned int i = 0;
void do_irq(void)
{//获取要处理的中断的中断号unsigned int irqno=GICC->IAR&0x3ff;switch (irqno){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; case 99:printf("key1_intc\n");//清除GICD中断排队标志GICD->ICPENDR[3] |= (0X1<<3);//清除EXTI中断触发标志EXTI->FPR1 |= (0X1<<9);break;default:break;}//清除IAR寄存器中的中断号GICC->EOIR |= irqno;
}
5.key_inc.h
#ifndef __KEY_INC_H__
#define __KEY_INC_H__
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"void key1_it_config();void key2_it_config();void key3_it_config();
#endif相关文章:
ARMday7
VID_20240322_203313 1.思维导图 2.main.c #include"key_inc.h" //封装延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}} } int main() {//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf(&q…...
Ubuntu中安装VSCode的一个指令
问题描述 本来想去VSCode官网上下载软件包,然后双击使用Ubuntu Software安装的,但是安装老不成功。 想用命令行指令dpkg进行安装,虽然能成功,但是后续使用 code . 命令打开VSCode又报错说找不到命令。 解决方式 在命令行中使用…...
生活电子产品拆解分析~汇总目录
一、锂电池电源 ①电子产品拆解分析-暖手宝 ②电子产品拆解分析-电动牙刷 ③电子产品拆解分析-充电宝台灯 ④电子产品拆解分析-太阳能自动感应灯 ⑤电子产品拆解分析-人体感应灯 ⑥电子产品拆解分析-食物电子秤 ⑦电子产品拆解分析-6600mA充电宝 ⑨电子产品拆解分析-触摸化妆镜…...
Tkinter 一文读懂
Tkinter 简介 Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可…...
2核4G服务器阿里云性能测评和优惠价格表
阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…...
Day41:WEB攻防-ASP应用HTTP.SYS短文件文件解析Access注入数据库泄漏
目录 ASP-默认安装-MDB数据库泄漏下载 ASP-中间件-CVE&短文件&解析&写权限 HTTP.SYS(CVE-2015-1635)主要用作蓝屏破坏,跟权限不挂钩 IIS短文件(iis全版本都可能有这个问题) IIS文件解析 IIS写权限 ASP-SQL注入-SQLMAP使用…...
什么是单点登录?
单点登录(Single Sign On,简称 SSO)简单来说就是用户只需在一处登录,不用在其他多系统环境下重复登录。用户的一次登录就能得到其他所有系统的信任。 为什么需要单点登录 单点登录在大型网站应用频繁,比如阿里旗下有淘…...
elasticsearch的数据搜索
DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户…...
云原生相关概念(小白版)
先说概念: 云原生应该是一种“建立在云上的多种效率提升技术的复合体"(而不是单一的技术创新),主要就是在云技术摆脱物理储存限制的基础上,进一步实现应用的专业优化(即文章里说的按功能切分…...
Dell戴尔XPS 12 9250二合一笔记本电脑原装出厂Windows10系统包下载
链接:https://pan.baidu.com/s/1rqUEM_q5DznF0om6eevcwg?pwdvij0 提取码:vij0 戴尔原厂WIN10系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式:esd/wim/sw…...
YOLOv5改进 | 图像去雾 | 利用图像去雾网络AOD-PONO-Net网络增改进图像物体检测(全网独家首发)
一、本文介绍 本文给大家带来的改进机制是利用AODNet图像去雾网络结合PONO机制实现二次增强,我将该网络结合YOLOv5针对图像进行去雾检测(也适用于一些模糊场景,图片不清晰的检测),同时本文的内容不影响其它的模块改进可以作为工作量凑近大家的论文里,非常的适用,图像去…...
代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离
583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…...
Hive常用函数 之 数值处理
Hive常用函数 之 数值处理 以下是Hive中常用的数值处理函数,可用于执行各种数学运算和数值转换操作。 1. ABS():返回一个数的绝对值。 SELECT ABS(-10); -- 输出: 102. ROUND():对一个数进行四舍五入。 SELECT ROUND(10.56); -- 输出: 113.…...
策略模式在项目中实际应用
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在Java中实现策略模式,通常包含三个…...
没有磁盘整列下的多机分布式存储:使用rysnc+多服务器文件/文件夹内容同步
目录 0.为什么要定时同步 1.程序安装 2.文件夹设置rsync使用 3.使用cron进行定时任务 0.为什么要定时同步 作为科研党,实验室有多个服务器,但是都是分批买的没有上磁盘整列,所以一个服务器上跑的东西并不能同步,有时候挂任务要…...
SQL:窗口函数之OVER()
窗口函数 通用格式 “函数 OVER (PARTITION BY 分组 ORDER BY 排序依据 升降序)”。 这里记录下OVER() 以及搭配LEAD/LAG函数的使用方法(执行平台Impala) 目录 OVER函数1、不加条件的OVER函数——得到所有的汇总结果2、仅有排序的OVER函数——得到按顺序…...
嵌入式开发--STM32G431RBTx-定时器中断流水灯
嵌入式开发–STM32G431RBTx-定时器中断流水灯 定时器工作原理 如图有反映stm32g431的定时器资源。 共10个定时器 定时器定时器类型个数TIM6,7基本定时器2TIM2,3,4全功能通用定时器3TIM15,16,17通用定时器(只有1或2个…...
人像抠图HumanSeg——基于大规模电话会议视频数据集的连接感知人像分割
前言 人像抠图将图像中的人物与背景进行像素级别的区分的技术。通过人像分割,可以实现诸如背景虚化、弹幕穿人等各种有趣的功能,为视频通话和影音观看提供更加优质和丰富的体验。由于广泛部署到Web、手机和边缘设备,肖像分割在兼顾分割精度的…...
Qt 项目使用visual studio 进行开发调试
https://marketplace.visualstudio.com/items?itemNameTheQtCompany.QtVisualStudioTools2015 https://devblogs.microsoft.com/cppblog/bring-your-existing-qt-projects-to-visual-studio/ 正常Qt开发中,使用Qt Creator 进行windows下MSVC编译器的调试是一件挺麻…...
Kotlin 中的惰性集合
1 通过序列提高效率 首先看以下代码: val list listOf(1, 2, 3, 4, 5) list.filter { it > 2 }.map { it * 2 }上面的写法很简单,在处理集合时,类似于上面的操作能帮我们解决大部分的问题。但是,当 list 中的元素非常多的时…...
OpenClaw连接飞书(机器人)配置及相关参数说明
飞书企业自创应用(机器人) 飞书开发者后台:https://open.feishu.cn/app?langzh-CN 1、创建企业自建应用,填写应用名称和描述。 2、添加应用能力:机器人 3、权限管理:应用身份权限,开通聊天基础…...
IC670PBI001总线接口单元
IC670PBI001 是 GE Fanuc Field Control 系列中的一款 Profibus 总线接口单元(BIU),主要用于连接PLC与远程I/O模块,实现数据通信与系统控制,是分布式I/O系统中的核心组件。1、作为系统核心接口单元,实现PLC…...
实战部署ECAPA-TDNN说话人识别系统:从架构解析到生产环境优化
实战部署ECAPA-TDNN说话人识别系统:从架构解析到生产环境优化 【免费下载链接】ECAPA-TDNN Unofficial reimplementation of ECAPA-TDNN for speaker recognition (EER0.86 for Vox1_O when train only in Vox2) 项目地址: https://gitcode.com/gh_mirrors/ec/ECA…...
构建具备批判性思维的AI Agent
构建具备批判性思维的AI Agent:从理论到生产级RAG反思循环系统 副标题:拆解GPT-4o、Claude Opus的「逻辑过滤」核心,用LangChain AutoGen Python落地高准确率Agent第一部分:引言与基础 1. 引人注目的标题 (本文已单独…...
智能内容访问技术:3分钟掌握付费限制突破方案
智能内容访问技术:3分钟掌握付费限制突破方案 在信息获取成本不断攀升的今天,你是否曾因付费墙而错过重要内容?据统计,超过85%的优质数字资源设置了访问门槛,让普通用户望而却步。本文将通过7个实用模块,为…...
手把手教你用STM32F303和LAN9252搭建EtherCAT从站(附IO、AD、DA完整代码)
从零构建EtherCAT从站:STM32F303与LAN9252实战指南 引言 第一次接触EtherCAT协议时,我被它那毫秒级的同步精度和灵活的拓扑结构所吸引,但随之而来的是一连串的困惑:如何选择合适的硬件平台?协议栈移植有哪些坑…...
别再谈OKR了!SITS2026重磅发布《AI原生团队动力学模型》:用3个动态参数替代KPI,实测交付周期压缩41%
第一章:SITS2026演讲:AI原生研发的文化变革 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场,来自全球37家头部科技企业的工程负责人共同指出:AI原生研发已不再仅是工具链升级,而是一场以“人机协同决…...
AutoGen框架下Memory与RAG的深度整合:打造高效智能体记忆系统
1. AutoGen框架中的Memory机制解析 第一次接触AutoGen的Memory功能时,我就像发现了一个新大陆。想象一下,你家的智能音箱突然能记住你上次说"把空调调到25度",下次直接说"跟上次一样"就能自动调节——这就是Memory的魔力…...
【曼博解析】Polysciences 24765 vs 23966:明星PEI转染试剂对比指南
24765 vs 23966:Polysciences PEI MAX与PEI 25K转染试剂,谁才是细胞转染真神? 摘要:从化学结构(线性vs分支状)、分子量大小、到应用场景(病毒包装vs蛋白表达)以及细胞毒性ÿ…...
卡尔曼滤波器开发实践之二:从理论到代码的五大公式实现解析
1. 卡尔曼滤波器五大公式的工程化理解 卡尔曼滤波器就像一位经验丰富的导航员,在充满噪声的数据海洋中为我们指引方向。我在实际项目中多次使用它来处理传感器数据,发现真正理解这五大公式的工程意义比死记硬背数学推导更重要。 1.1 预测与更新的双人舞 …...
