关于RH850的中断/异常方法,RH850有直接矢量方式和表参照方式两种中断/例外。 1、直接矢量方式是根据发生因素,跳转到固定的处理地址,执行跳转目的地的代码。将RBASE或EBASE作为基本地址,加上发生原因的偏移值,得到的值作为处理地址。 2、表引用方式是读取处理程序地址中存储的字数据,跳转到该字数据指向的地址。将INTBP作为基本寄存器,加上信道号*4的偏移值,得到的值作为处理程序地址。 在瑞萨RH850微控制器中,中断系统是一个关键特性,它允许处理器在执行正常程序的同时响应外部事件。RH850支持两种中断/异常处理机制:直接矢量方式和表参照方式。 1. 直接矢量方式: 在这种方式下,中断处理程序的地址是预先确定的。当一个中断发生时,处理器根据中断源直接跳转到相应的固定处理地址执行代码。这个地址是通过将RBASE或EBASE寄存器作为基础地址,然后加上中断源的偏移值计算得出的。例如,如果PSW.EBV(中断向量选择位)为0,则使用RBASE;若为1,则使用EBASE。这种方式简单且快速,但可能导致内存空间的浪费,因为每个中断源都有固定大小的预留空间。 2. 表参照方式: 与直接矢量方式相比,表参照方式更加灵活。它使用INTBP(中断基址寄存器)作为基础,加上中断通道号乘以4的偏移值来计算处理程序地址。中断发生时,处理器会读取这个地址处的字数据,然后跳转到该数据所指向的地址执行处理程序。这种方法节省了内存,因为可以动态地改变中断处理程序的地址,但增加了处理中断的开销,因为它需要额外的读取操作。 实现RH850中断系统的步骤通常包括以下两部分: ① 使用`#pragma interrupt`指令定义中断/异常函数: 在使用CC-RH编译器时,开发者可以利用`#pragma interrupt`指令在C语言中声明中断服务函数。这告诉编译器该函数应该作为中断处理程序。例如,你可以定义一个名为`_intp0`的中断服务函数来处理特定的中断。 ```c #pragma interrupt (_intp0, vector=INTERRUPT_VECTOR) void _intp0(void) { // 这里编写中断处理代码 } ``` ② 定义中断/异常向量: 中断/异常向量是处理器查找中断处理程序地址的入口点。对于直接矢量方式,需要在固件中设置好RBASE或EBASE寄存器对应的中断处理程序地址;对于表参照方式,需要在内存中的中断向量表中为每个中断通道分配并初始化相应的处理程序地址。 这两种中断处理方式各有优缺点,开发者需要根据应用需求选择合适的方法。直接矢量方式适合对响应时间有严格要求且中断源数量固定的情况,而表参照方式适用于中断源较多且可能需要动态调整处理程序地址的情况。 RH850的中断系统提供了一种高效的方式来管理外部事件的响应,通过灵活选择中断处理机制,开发者可以优化系统的实时性能和资源利用率。理解并熟练掌握这两种中断处理方式对于开发RH850微控制器的应用至关重要。
2024-07-25 13:57:06 786KB
1
MySQL Workbench是一款强大的数据库设计和管理工具,专为MySQL数据库设计。它提供了直观的图形界面,使得数据库建模、管理和维护变得更加便捷。本篇文章将详细介绍如何使用MySQL Workbench进行数据库设计。 下载并安装MySQL Workbench。在安装完成后,打开软件,可以看到主界面。在“Physical Schemata”部分,可以通过点击"+"按钮来创建新的数据库方案。在本例中,我们创建了一个名为"ORDER"的方案,用于存储订单系统的物理数据模型。 创建订单表是设计数据库模型的关键步骤。在EER图表区域,通过双击“Add Diagram”添加新的图表,然后选择“Table”图标并将其拖放到图表区。接着,通过右键选择表并编辑来定义表的属性。例如,创建名为"ORDER"的表,并添加列"ORDER_NO",设置其为INT类型,同时选择AI(AutoIncrement)以确保每次插入新记录时,该字段自动递增。 为了完善"ORDER"表,还需添加其他列,如"ORDER_DATE"和"ORDER_TYPE"。"ORDER_TYPE"列可以设置默认值,例如"S",代表销售订单。同样,可以创建"SALES_ORDER"和"PURCHASE_ORDER"子表,分别添加它们的专属列。 在设计数据库模型时,建立表间的关系同样重要。在本例中,"SALES_ORDER"和"ORDER"之间是1:1关系,表示每个销售订单都与一个订单关联。在EER图表中,通过连接线来表示这种关系。从"ORDER"表的"ORDER_NO"列拖动到"SALES_ORDER"表的相应位置,这会创建一个连接,并允许设置关系属性,如外键约束。 类似地,创建"PURCHASE_ORDER"与"ORDER"之间的关系。在这个过程中,可以定义不同类型的关联,如一对一(1:1)、一对多(1:n)或多对多(m:n),并设置参照完整性和约束条件。 MySQL Workbench还支持正向工程(Forward-Engineering),这是一个将设计的模型直接转化为实际的数据库结构的过程。一旦模型设计完成,通过菜单选择"Database" -> "Forward Engineer",软件将自动生成SQL脚本,执行这些脚本即可在MySQL服务器上创建相应的数据库结构。 此外,MySQL Workbench提供了许多其他功能,如逆向工程(Reverse-Engineering)以从现有数据库生成模型,以及SQL开发工具,方便编写、执行和调试SQL查询。此外,它还支持数据导入/导出、图表分析、版本控制等,是数据库管理员和开发者的得力助手。 MySQL Workbench提供了一站式的解决方案,用于设计、管理和维护MySQL数据库。通过其可视化界面,用户可以轻松地构建复杂的数据库模型,有效地提高工作效率。对于初学者和专业人士来说,掌握MySQL Workbench的使用方法都是至关重要的,因为它极大地简化了数据库的生命周期管理。
2024-07-18 12:41:41 991KB MySQL Workbench
1
自己做的混合字体,中文是微软雅黑,英文是CourierNew的Bold字体,均为等宽字体,视觉效果柔和,非常适合编程。附件中有自己机器上的显示效果截图以及使用方法。 第一次上传资源,弄点糊口分,请多包涵!
2024-06-24 10:50:54 9.72MB Courier 编程字体 混合字体
1
本文主要讲解使用多线程模块QThread解决PyQt界面程序唉执行耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题。用户使用工具过程中出现这些问题时会误以为程序出错,从而把程序关闭。这样,导致工具的用户使用体验不好。下面我们通过模拟上述出现的问题并讲述使用多线程QThread模块解决此类问题的方法。 PyQt程序卡顿和无法实时显示问题现象 使用PyQt界面程序,点击运行按钮后,程序在显示框中每秒打印1个数字。程序代码如下: # -*- coding: utf-8 -*- import sys import time from PyQt5.QtCore import QThrea
2024-05-10 21:38:54 151KB read
1
BTS7960 驱动电路 BTS7960 是应用于电机驱动的大电流半桥高集成芯片,它带有一个 P 沟道的高边 MOSFET、一个N 沟道的低边MOSFET 和一个驱动IC。用两片 BTS7960 组成全 H 桥驱动电路,完成控制电机正反转的功能。 BTS7960 的芯片内部为一个半桥。INH 引脚为高电平,使能 BTS7960。IN 引脚用于确定 哪个MOSFET 导通。IN=1 且 INH=1 时,高边MOSFET 导通,OUT 引脚输出高电平; IN=0 且INH=1时,低边 MOSFET 导通,OUT 引脚输出低电平。SR 引脚外接电阻的大 小,可以调节 MOS 管导通和关断的时间,具有防电磁干扰的功能。
2024-04-23 15:09:18 6.63MB
1
前言 Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法。 开发工具版本 pyhton3.7.4 + PyQt 5.11.2 Qt Designer工具主界面 打开路径:${python安装目录}/Lib/site-packages/pyqt5_tools/designer.exe。主界面如下: 主界面不同区域介绍: 工具箱 区域:提供Gui界面开发各种基本控件,如单选框、文
2024-04-23 09:57:30 553KB form pyqt
1
Java8最值得学习的特性就是Lambda表达式,下面这篇文章主要给大家介绍了关于java8学习教程之lambda表达式使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
1
VLC做流媒体服务器的使用方法.doc
2024-03-31 00:05:45 656KB 播放器,vlc流媒体
1
easySize使用方法和代码实现MFC对话框与空间等比放大
2024-03-03 08:24:08 23KB
1
本文为大家介绍了数字万用表的使用方法
2024-02-29 11:23:23 50KB 数字万用表 使用方法 直流电压
1