CPU与硬件的交互方式(中断、轮询)

news2024/11/29 0:49:24

CPU与硬件的交互方式

轮询方式:CPU不断的访问硬件有没有进行操作,如果接收到了信息,CPU就处理。如果没有过一会在访问一遍 直到有信息为止
中断方式:硬件操作的时候会写一个中断,向CPU发送这个中断,CPU正常执行程序,如果收到该中断,就处理 中断
DMA方式:硬件产生数据时,直接放到存储器当中,不需要CPU的参与了

1.简述轮询和中断两种方式的本质区别是什么
轮询:需要CPU主动访问有没有数据
中断:是寄存器向CPU发送中断信号,来处理数据

轮询方式

轮询方式:实现KEY按键来控制LED2灯的点亮和熄灭

第一步:查看KEY按键的通电方式

在这里插入图片描述
得出结论K2按下连接地,弹起是通过VDD1V8_EXT来通电也就是1.8V高电平,通过UART_RING网络标号查看连接到那个引脚上

在这里插入图片描述
通过FS4412_CoreBoard_V2电路图查看连接在K2按键的引脚是GPX1_1引脚上面

第二步:

将GPX1_1寄存器设置成输入功能 因为是要接收KEY2按键的信号
判断GPX1_DAT寄存器接收到的是低电平还是高电平

第三步:
查看LED2灯引脚控制情况
在这里插入图片描述
通过CHG_COK网络标号查看那个引脚控制
在这里插入图片描述

将GPX2_7寄存器设置成输出功能
在这里插入图片描述

将GPX2_DAT寄存器第七位设置成高电平点亮,低电平熄灭

代码实现:

#include "exynos_4412.h"


void GPX_LED (char flag) {
	if(flag) {
		/* 点亮LED2 */
		GPX2.DAT = GPX2.DAT | (0x1 << 7);
	} else {
		/* 熄灭LED2 */
		GPX2.DAT = GPX2.DAT & (~(0x1 << 7));
	}
}

int main()
{
	char flag = 0x1;
	/* 将GPX1_1设置成输入功能 */
	GPX1.CON = GPX1.CON & (~(0xF << 4));

	/* 讲GPX2_7设置成输出功能 LED2 */
	GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28);

	while (1) {
		
		/* 判断GPX_1引脚状态,即判断按键是否按下 Key2 */
		if (!(GPX1.DAT & (1 << 1))) {
			printf("Key2 Pressed\n");

			/* 点亮和熄灭LED2 */
			flag = !flag;
			GPX_LED(flag);

			/* 判断按键是否松开 */
			while (!(GPX1.DAT & (1 << 1)));
		}
		else {
		}
	}
	return 0;
}

中断方式

中断方式:GPIO寄存器检测KEY按键引脚是否产生中断

在这里插入图片描述

CPU检测到K2为下降沿信号会向CPU发送一个中断信号

如果将GPX1_1寄存器这一组设置成中断功能,那么中断一些详细的设置就在EXT_INT ‘41’ CON数字是41的寄存器中设置
在这里插入图片描述
EXT_INT41_CON[1]:产生中断的方式,什么情况下向CPU发送中断信号
0x0 = Low level高电平方式
0x1 = High level 低电平方式
0x2 = Triggers Falling edge 上升沿方式
0x3 = Triggers Rising edge 下降沿方式
0x4 = Triggers Both edge 上升、下降其中一种
0x5 to 0x7 = Reserved

上升沿:就是有一个信号由高电平变成低电平时触发

在这里插入图片描述
EXT_INT41_MASK寄存器:是关闭和打开引脚中断功能的

代码实现:

void GPX_LED (char flag) {
	if(flag) {
		/* 点亮LED2 */
		GPX2.DAT = GPX2.DAT | (0x1 << 7);
	} else {
		/* 熄灭LED2 */
		GPX2.DAT = GPX2.DAT & (~(0x1 << 7));
	}
	/* 讲GPX2_7设置成输出功能 LED2 */
	GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28);
}

int main()
{
	char flag = 0x1;
	/* 将GPX1_1设置成中断功能 */
	GPX1.CON = GPX1.CON | (0xF << 4);

	/* 设置GPX1_1中断触发方式 下降沿触发方式*/
	EXT_INT41_CON = EXT_INT41_CON & (~(0x7 << 4)) | (0x2 << 4);

	/* 使用GPX1_1中断功能开关 0-开  1-关 */
	EXT_INT41_MASK = EXT_INT41_MASK & (~(1 << 1));

	/*
	设置了这些中断功能,GPIO寄存器检测到KEY按键的中断信号,
	是不能直接往CPU中发送这个中断信号的,需要通过中断控制器发往CPU
	 */
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】练习习题集【4月 - 7 月】

LEETCODE习题集【4月-7月总结】 简单 数组部分 1.重复数 题目&#xff1a; 在一个长度u为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中…

网络安全—黑客技术【自学】

一、黑客是什么 原是指热心于计算机技术&#xff0c;水平高超的电脑专家&#xff0c;尤其是程序设计人员。但后来&#xff0c;黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实&#xff0c;网络信息空间安全已经成为海陆空之…

Linux驱动——input子系统

一、input子系统基本框架 Linux内核为了两个目的&#xff1a; 简化纯输入类外设&#xff08;如&#xff1a;键盘、鼠标、游戏杆、轨迹球、触摸屏。。。等等&#xff09;的驱动开发 统一输入类外设产生的数据格式&#xff08;struct input_event&#xff09;&#xff0c;更加方…

将你的计算机变身为果园守护者:与本地树莓派建立连结的乐趣探索!!

如何连接本地树莓派 文章目录 如何连接本地树莓派前言1. 操作流程2. 打开树莓派SSH功能3. 确认树莓派信息后 安装相应SSH客户端 &#x1f341; 小结 &#x1f341; 前言 树莓派作为一款以教育为目的推出的硬件系统&#xff0c;也是超低功耗的微型“准系统”&#xff0c;能够提…

Redis的RDB持久化

Redis是一个键值对数据库服务器&#xff0c;服务器中通常包含着任意个非空数据库&#xff0c;而每个非空数据库中又可以包含任意个键值对&#xff0c;为了方便起见&#xff0c;我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 举个例子&#xff0c;下图展示了一…

模仿学习(行为克隆,逆强化学习,生成式对抗模仿学习)

目录 1.模仿学习 1.1先说强化学习 1.2再说逆强化学习 1.3最后说生成对抗模仿学习 1.3.1先说GAN 1.3.2再说生成对抗模仿学习 1.4逆强化学习常用方法 参考文献 1.模仿学习 定义&#xff1a;当我们想训练机器人时&#xff0c;通过复制人类的动作&#xff0c;对机器人进行训…

ssm新生报到系统源码和论文PPT

ssm新生报到系统源码和论文PPT004 开发环境 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 选题依据及意义 每学年九月份随着新生的入校&#xff0c;学校工作中的重点都会集…

Endnote中导入和显示中文文献国标格式具体实现步骤

Endnote中导入和显示中文文献国标格式具体实现步骤 目录 Endnote中导入和显示中文文献国标格式具体实现步骤一、下载中文文献引用标准格式二、将下载的两种格式复制到Endnote安装文件下的Styles子文件夹中三、对导入的样式进行标记&#xff0c;以便在word中方便显示和使用四、在…

领航优配:美联储货币政策风向或已生变 私行纵论下半年黄金配置价值

美联储钱银方针风向或已生变&#xff0c;黄金的拥趸开端跃跃欲试。 费城联储主席帕特里克哈克周二标明&#xff0c;美国有一条通往经济软着陆的路径&#xff0c;失业率或许有所上升&#xff0c;但起伏不会太大&#xff1b;不希望美联储过度收紧钱银方针&#xff0c;估计明年某时…

springBoot整合RabbitMq实现手动确认消息

如何保证消息的可靠性投递&#xff1f; 1.保证生产者向broke可靠性投递&#xff0c;开启ack投递成功确认&#xff0c;如果失败的话进行消息补偿 /*** author yueF_L* date 2023-08-10 01:32* ConfirmCallback&#xff1a;消息只要被 RabbitMQ broker 接收到就会触发confirm方…

OpenAI-Translator 实战总结

最近在极客时间学习《AI 大模型应用开发实战营》&#xff0c;自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator&#xff0c;在这里简单记录下开发过程和心得体会&#xff0c;供有兴趣的同学参考 功能概览 通过openai的chat API&#xff0c;实现一个pdf翻译器实现一个…

牛客小白月赛75C题题解

文章目录 方豆子问题建模问题分析代码 方豆子 问题建模 给定一个整数n&#xff0c;要求输出n级好豆豆&#xff0c;n级好豆豆由3个n-1级好豆豆和1个n-1级坏豆豆组成&#xff0c;已经给出了1级好豆豆和1级坏豆豆。 问题分析 由于最终的豆豆是由其上一级的豆豆产生的&#xff0…

将应用设置成系统App/获取Android设备SN号

1&#xff0c;和系统签名一致&#xff1b;&#xff08;签名设置签名文件&#xff09; 2&#xff0c;配置Manifest 至此你的App就是一个系统App了&#xff0c;可以执行一些系统App才能有的操作&#xff0c;如获取机器SN号&#xff1a; public String getSerialNumber() {Strin…

如何系统的学习单片机?

一、学习单片机需要的一些基础知识 &#xff08;1&#xff09;要具有一些模电、数电的知识&#xff08;不一定要精通&#xff0c;但基本至少要知道&#xff09; &#xff08;2&#xff09;具备C语言基础&#xff0c;有基础就可以入门了。数据结构、设计模式、汇编这些&#x…

IAR目标代码4字节对齐

向工程添加文件 eof.c : // 文件头 #if defined(__CC_ARM) // MDK // uint32_t g_update_flag[2] __attribute__((zero_init, at(0x1000FFF0)));const unsigned long gc_eof __attribute__((used)) 0xFFFFFFFFul; #elif defined(__ICCARM__) // IAR__root const unsigned…

【ur3机械臂配置夹爪Robotiq2F-85】

【ur3机械臂配置夹爪Robotiq2F-85】 1. 前言2. 按照官网要求清点安装设备3. 在示教器上配置夹爪3.1 另一头连接好夹爪和缆线3.2 下载官网驱动 5. 总结 1. 前言 欢迎大家阅读2345VOR的博客【ur3机械臂配置夹爪Robotiq2F-85】&#x1f973;&#x1f973;&#x1f973;2345VOR鹏鹏…

【100天精通python】Day31:使用python操作数据库_数据库编程接口,连接对象和游标对象,数据库连接配置

专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 数据库编程接口是用于连接、操作和管理数据库的一组函数、类和方法。不同类型的数据库可能有不同的编程接口。以下是一些常见的数据库编程接口&#xff1a; 一、数据库编程接口 …

Android AOSP源码编译——AOSP下载(一)

一、电脑配置 Ubuntu16.04 16G&#xff0c;硬盘的大小最好大于300G (我这边是找了个win电脑装了双系统 没有使用虚拟机的方式) 二、基础环境配置 1、安装git sudo apt install git配置git email和name git config --global user.email "youexample.com" git conf…

大环境下,企业如何找到大数据传输解决方案

随着网络技术的进步和智能设备的普及&#xff0c;大数据成为了当下社会的热点话题。但是&#xff0c;大数据的传输和处理仍然存在着很多的困难和挑战。在大数据传输中&#xff0c;如何解决数据量巨大、网络带宽不足、传输时间过长和数据安全等问题&#xff0c;是当前亟待破解的…

zmibra ssl证书替换

一、阿里云上申请证书 选择其他证书 二、证书上传及制作 首先当然要去阿里云申请的ssl证书下载其他类型证书,解压缩后有两个文件上传到相应目录, 文件名类似18131-mail.xxx.comkey和181111-mail.xxx.com.pem 创建目录 /opt/zimbra/ssl/aliyunssl/ 上传这两个文件 以上是…