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

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 | 机器学习之数据清洗

机器学习前的数据清洗&#xff08;异常值检验&#xff0c;标准化处理&#xff0c;哑变量处理&#xff09; Python | 机器学习之数据清洗 机器学习 - 基础概念 - scikit-learn - 数据预处理​​​​​​​ 数据的标准化&#xff08;离差标准化、log函数转换、atan函数转换、z…...

力扣:509. 斐波那契数(动态规划,附带递归版本) 详细讲解动态规划的思路

题目&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中…...

Python3,压箱底的代码片段,提升工作效率稳稳的。

压箱底代码存活 1、引言2、代码实例2.1 操作存储服务2.1.1 Redis操作2.1.2 MongoDB操作2.1.3 MySQL操作 2.2 异步操作2.3 多线程 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;这年底了&#xff0c;得不得分享一点压箱底的东西啊 小鱼&#xff1a;… 压箱底的东西&…...

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&#xff08;原生的&#xff09; 概念&#xff1a; Asynchronous JavaScript And XML&#xff08;异步的JavaScript和XML&#xff09; 作用&#xff1a; 数据交互&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据异步交…...

在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序

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

uni-app/vue封装etc车牌照输入,获取键盘按键键值

先看下效果如下&#xff1a; 动态图如下 uniapp的keyup获取不到keyCode和compositionstart&#xff0c;compositionend&#xff0c;所以需要监听input节点的keyup事件&#xff0c; 思路以及代码如下&#xff1a; 1.将每一个字符用文本框输入&#xff0c;代码如下 <view …...

iostat获取IO延迟单位从ms调整us的方案

iostat命令统计的磁盘I/O延迟通常是以毫秒&#xff08;ms&#xff09;为单位&#xff0c;例如在输出中的await字段表示的是平均服务时间&#xff0c;包括等待时间和处理时间&#xff0c;这个值就是以毫秒为单位。 然而&#xff0c;要获取更精确到微秒级别&#xff08;us&#x…...

K8s 源码剖析及debug实战之 Kube-Scheduler(四):预选算法详解

文章目录 0. 引言1. 回顾2. podFitsOnNode 为什么执行两次预选3. 预选算法有哪些4. 参考 0. 引言 欢迎关注本专栏&#xff0c;本专栏主要从 K8s 源码出发&#xff0c;深入理解 K8s 一些组件底层的代码逻辑&#xff0c;同时借助 debug Minikube 来进一步了解 K8s 底层的代码运行…...

ES6之解构赋值详解

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

UntiyShader(五)属性、内置文件和变量

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

Pytorch简介

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

亚马逊云科技Amazon Q,一款基于生成式人工智能的新型助手

近日&#xff0c;亚马逊云科技宣布推出Amazon Q&#xff0c;这是一款基于生成式人工智能&#xff08;AI&#xff09;的新型助手&#xff0c;专为辅助工作而设计&#xff0c;可以根据您的业务量身定制。通过连接到公司的信息存储库、代码、数据和企业系统&#xff0c;可以使用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。 可以看到&#xff0c;node.js是基础&#xff0c;提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式&#xff0c;以加速开发。...

我的笔记本电脑死机问题折腾记录

两年前&#xff0c;买了一台笔记本电脑。直到今年4月份&#xff0c;不到两年的时间&#xff0c;便出现了花屏的情况&#xff0c;然后就到官方售后去维修&#xff0c;换屏。然后在6月份&#xff0c;屏幕问题再次出现&#xff0c;又去售后维修。 经过两次维修&#xff0c;笔记本…...

uniApp中uView组件库的丰富布局方法

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

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...