12.26
key_it.c
#include"key_it.h"
void led_init()
{// 设置GPIOE/GPIOF时钟使能RCC->MP_AHB4ENSETR |= (0x3 << 4);// 设置PE10/PE8/PF10为输出模式GPIOE->MODER &= (~(0x3 << 20));GPIOE->MODER |= (0x1 << 20);GPIOE->MODER &= (~(0x3 << 16));GPIOE->MODER |= (0x1 << 16);GPIOF->MODER &= (~(0x3 << 20));GPIOF->MODER |= (0x1 << 20);// 设置PE10/PE8/PF10为推挽输出GPIOE->OTYPER &= (~(0x1 << 10));GPIOE->OTYPER &= (~(0X1 << 8));GPIOF->OTYPER &= (~(0x1 << 10));// 设置PE10/PE8/PF10输出速度为低速GPIOE->OSPEEDR &= (~(0x3 << 20));GPIOE->OSPEEDR &= (~(0X3 << 16));GPIOF->OSPEEDR &= (~(0x3 << 20));// 设置PE10/PE8/PF10无上拉下拉GPIOE->PUPDR &= (~(0x3 << 20));GPIOE->PUPDR &= (~(0X3 << 16));GPIOF->PUPDR &= (~(0X3 << 20));
}void key1_it_config()
{//使能GPIOF时钟RCC->MP_AHB4ENSETR |= (0x1<<5);//设置PF9管脚为输入GPIOF->MODER &= (~(0x3<<18));//设置PF9作为EXTI9事件的输入EXTI->EXTICR3 &= (~(0x1f<<8));EXTI->EXTICR3 |= (0x05<<8);//设置下降沿使能检测EXTI9事件EXTI->FTSR1 |= (0x1<<9);//设置EXTI9事件不屏蔽EXTI->C1IMR1 |= (0x1<<9);//GICD使能EXTI9(99号)中断GICD->ISENABLER[3] |= (0x1<<3);//GICD 设置99号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<27));//选择CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<24);//全局使能组0中断被转发到GICCGICD->CTRL |= (0X1);//设置中断的优先级掩码GICC->PMR |= (0x1f<<3);//允许组0中断被CPU处理GICC->CTRL |= (0x1);
}
void key2_it_config()
{//设置PF7管脚为输入GPIOF->MODER &= (~(0x3<<14));//设置PF7作为EXTI7事件的输入EXTI->EXTICR2 &= (~(0x1f<<24));EXTI->EXTICR2 |= (0x05<<24);//设置下降沿使能检测EXTI7事件EXTI->FTSR1 |= (0x1<<7);//设置EXTI7事件不屏蔽EXTI->C1IMR1 |= (0x1<<7);//GICD使能EXTI7(97号)中断GICD->ISENABLER[3] |= (0x1<<1);//GICD 设置97号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<11));//选择CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<8);//全局使能组0中断被转发到GICCGICD->CTRL |= (0X1);//设置中断的优先级掩码GICC->PMR |= (0x1f<<3);//允许组0中断被CPU处理GICC->CTRL |= (0x1);
}
void key3_it_config()
{//设置PF8管脚为输入GPIOF->MODER &= (~(0x3<<16));//设置PF8作为EXTI8事件的输入EXTI->EXTICR3 &= (~0x1f);EXTI->EXTICR3 |= (0x05);//设置下降沿使能检测EXTI8事件EXTI->FTSR1 |= (0x1<<8);//设置EXTI8事件不屏蔽EXTI->C1IMR1 |= (0x1<<8);//GICD使能EXTI8(98号)中断GICD->ISENABLER[3] |= (0x1<<2);//GICD 设置98号中断的优先级GICD->IPRIORITYR[24] &= (~(0x1f<<19));//选择CPU0处理当前中断GICD->ITARGETSR[24] |= (0x1<<16);//全局使能组0中断被转发到GICCGICD->CTRL |= (0X1);//设置中断的优先级掩码GICC->PMR |= (0x1f<<3);//允许组0中断被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 = (GICC->IAR & 0x3ff);switch (irqno){case 99: // key1printf("KEY1_INT\n");GPIOE->ODR |= (0x1<<10);// 清除GICD的中断排队标志GICD->ICPENDR[3] |= (0x1<<3);// 清除exti的事件触发标志EXTI->FPR1 |= (0x1<<9);delay(2000);GPIOE->ODR &= (~(0x1<<10));break;case 97: // KEY2printf("KEY2_INT\n");GPIOF->ODR |= (0x1<<10);// 清除GICD的中断排队标志GICD->ICPENDR[3] |= (0x1<<1);// 清除exti的事件触发标志EXTI->FPR1 |= (0x1<<7);delay(2000);GPIOF->ODR &= (~(0x1<<10));break;case 98: // key3printf("KEY3_INT\n");GPIOE->ODR |= (0x1<<8);// 清除GICD的中断排队标志GICD->ICPENDR[3] |= (0x1<<2);// 清除exti的事件触发标志EXTI->FPR1 |= (0x1<<8);delay(2000);GPIOE->ODR &= (~(0x1<<8));break;}// 清除中断号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(){led_init();key1_it_config();key2_it_config();key3_it_config();while (1){printf("do main...\n");delay(1000);}return 0;}
相关文章:

12.26
key_it.c #include"key_it.h" void led_init() {// 设置GPIOE/GPIOF时钟使能RCC->MP_AHB4ENSETR | (0x3 << 4);// 设置PE10/PE8/PF10为输出模式GPIOE->MODER & (~(0x3 << 20));GPIOE->MODER | (0x1 << 20);GPIOE->MODER & (~…...

2022年全国职业院校技能大赛高职组云计算正式赛卷第三场-公有云
2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务 1】公有云服务搭建[10 分] 【任务 2】公有云服务运维[10 分] 【任务 3】公有云运维…...
Python | 机器学习之数据清洗
机器学习前的数据清洗(异常值检验,标准化处理,哑变量处理) Python | 机器学习之数据清洗 机器学习 - 基础概念 - scikit-learn - 数据预处理 数据的标准化(离差标准化、log函数转换、atan函数转换、z…...
力扣:509. 斐波那契数(动态规划,附带递归版本) 详细讲解动态规划的思路
题目: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中…...

Python3,压箱底的代码片段,提升工作效率稳稳的。
压箱底代码存活 1、引言2、代码实例2.1 操作存储服务2.1.1 Redis操作2.1.2 MongoDB操作2.1.3 MySQL操作 2.2 异步操作2.3 多线程 3、总结 1、引言 小屌丝:鱼哥,这年底了,得不得分享一点压箱底的东西啊 小鱼:… 压箱底的东西&…...

Flowable-升级为7.0.0.M2-第三节
目录 启动项目添加虚拟机参数启动成功 启动项目 添加虚拟机参数 java.base/java.langALL-UNNAMED --add-opens java.base/java.mathALL-UNNAMED --add-opens java.base/java.util.concurrentALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/ja…...

JavaWeb——前端之AjaxVue
6. 前后端交互 6.1 Ajax(原生的) 概念: Asynchronous JavaScript And XML(异步的JavaScript和XML) 作用: 数据交互:通过Ajax可以给服务器发送请求,并获取服务器响应的数据异步交…...

在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
如果您有 Android 设备,您可能会将个人和专业的重要文件保存在设备的 SD 卡上。这些文件包括照片、视频、文档和各种其他类型的文件。您绝对不想丢失这些文件,但当您的 SD 卡损坏时,数据丢失是不可避免的。 幸运的是,您不需要这样…...

uni-app/vue封装etc车牌照输入,获取键盘按键键值
先看下效果如下: 动态图如下 uniapp的keyup获取不到keyCode和compositionstart,compositionend,所以需要监听input节点的keyup事件, 思路以及代码如下: 1.将每一个字符用文本框输入,代码如下 <view …...
iostat获取IO延迟单位从ms调整us的方案
iostat命令统计的磁盘I/O延迟通常是以毫秒(ms)为单位,例如在输出中的await字段表示的是平均服务时间,包括等待时间和处理时间,这个值就是以毫秒为单位。 然而,要获取更精确到微秒级别(us&#x…...

K8s 源码剖析及debug实战之 Kube-Scheduler(四):预选算法详解
文章目录 0. 引言1. 回顾2. podFitsOnNode 为什么执行两次预选3. 预选算法有哪些4. 参考 0. 引言 欢迎关注本专栏,本专栏主要从 K8s 源码出发,深入理解 K8s 一些组件底层的代码逻辑,同时借助 debug Minikube 来进一步了解 K8s 底层的代码运行…...

ES6之解构赋值详解
✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…...

UntiyShader(五)属性、内置文件和变量
目录 一、如何使用属性 例子 ShaderLab中的属性的类型和Cg中的变量的类型之间的匹配关系 二、Unity提供的内置文件和变量 内置的包含文件 内置的变量 一、如何使用属性 在一开始我们提到过,材质和UnityShader之间有着密切的练习,我们可以通过材质面…...

Pytorch简介
1.1 Pytorch的历史 PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。在2016年发布后,PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。下面我们将详细介绍PyTorch的发展历程。 在2016年,Facebook的AI研究团队…...

亚马逊云科技Amazon Q,一款基于生成式人工智能的新型助手
近日,亚马逊云科技宣布推出Amazon Q,这是一款基于生成式人工智能(AI)的新型助手,专为辅助工作而设计,可以根据您的业务量身定制。通过连接到公司的信息存储库、代码、数据和企业系统,可以使用Am…...

骑砍战团MOD开发(29)-module_scenes.py游戏场景
骑砍1战团mod开发-场景制作方法_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Cw411N7G4/ 一.骑砍游戏场景 骑砍战团中进入城堡,乡村,战斗地图都被定义为场景,由module_scenes.py进行管理。 scene(游戏场景) 天空盒(Skyboxes.py) 地形(terrain code) 场景物(scene_…...

ROS学习记录:ROS系统中的激光雷达消息包的数据格式
一、在工作空间中输入source ./devel/setup.bash 二、输入roslaunch wpr_simulation wpb_simple.launch打开机器人仿真环境 三、机器人仿真环境打开成功 四、给机器人围上一圈障碍物 五、再打开一个工作空间终端 六、输入roslaunch wpr_simulation wpb_rviz.launch打开RViz 七、…...

Vue.js和Node.js的关系--类比Java系列
首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到,node.js是基础,提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式,以加速开发。...
我的笔记本电脑死机问题折腾记录
两年前,买了一台笔记本电脑。直到今年4月份,不到两年的时间,便出现了花屏的情况,然后就到官方售后去维修,换屏。然后在6月份,屏幕问题再次出现,又去售后维修。 经过两次维修,笔记本…...

uniApp中uView组件库的丰富布局方法
目录 基本使用 #分栏间隔 #混合布局 #分栏偏移 #对齐方式 API #Row Props #Col Props #Row Events #Col Events UniApp的uView组件库是一个丰富的UI组件库,提供了各种常用的UI组件和布局方法,帮助开发者快速构建美观、灵活的界面。下面给你写一…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...