RH850 中断怎么配置
时间: 2023-06-01 17:01:36 浏览: 290
RH850的中断配置如下:
1. 配置中断向量表
RH850的中断向量表包含了所有中断向量的地址。首先需要在代码中定义中断向量表,并将中断向量表的地址写入到CPU的INTB寄存器中。中断向量表的定义如下:
```c
#pragma section C FIXEDVECT
const void* const Fixed_Vectors[] = {
/* 0x00 */ 0, /* Reset */
/* 0x04 */ &NMI_Handler, /* NMI */
/* 0x08 */ &HARDERR_Handler, /* Hard Error */
/* 0x0C */ &SWI_Handler, /* Software Interrupt */
/* 0x10 */ &INT0_Handler, /* Interrupt 0 */
/* 0x14 */ &INT1_Handler, /* Interrupt 1 */
/* 0x18 */ &INT2_Handler, /* Interrupt 2 */
/* 0x1C */ &INT3_Handler, /* Interrupt 3 */
/* 0x20 */ &INT4_Handler, /* Interrupt 4 */
/* 0x24 */ &INT5_Handler, /* Interrupt 5 */
/* 0x28 */ &INT6_Handler, /* Interrupt 6 */
/* 0x2C */ &INT7_Handler, /* Interrupt 7 */
/* 0x30 */ &INT8_Handler, /* Interrupt 8 */
/* 0x34 */ &INT9_Handler, /* Interrupt 9 */
/* 0x38 */ &INT10_Handler, /* Interrupt 10 */
/* 0x3C */ &INT11_Handler, /* Interrupt 11 */
/* 0x40 */ &INT12_Handler, /* Interrupt 12 */
/* 0x44 */ &INT13_Handler, /* Interrupt 13 */
/* 0x48 */ &INT14_Handler, /* Interrupt 14 */
/* 0x4C */ &INT15_Handler, /* Interrupt 15 */
};
```
2. 配置中断控制器
中断控制器是RH850系统中负责管理中断的硬件模块。中断控制器需要配置以下内容:
- 使能中断控制器
- 配置优先级
- 配置中断触发方式
- 配置中断使能
以下是中断控制器的配置代码示例:
```c
INTC.ICR.BIT.EN = 1; /* Enable Interrupt Controller */
INTC.ICR.BIT.PRI0 = 1; /* Set Priority Group 0 */
INTC.ICR.BIT.PRI1 = 2; /* Set Priority Group 1 */
INTC.ICR.BIT.PRI2 = 3; /* Set Priority Group 2 */
/* Configure Interrupts */
INTC.IPR[INT0_IRQn].BIT.PRI = 1; /* Set Priority */
INTC.IELR[INT0_IRQn].BIT.IRQMD = 0x03; /* Set Trigger Mode */
INTC.IER[INT0_IRQn].BIT.EN = 1; /* Enable Interrupt */
INTC.IPR[INT1_IRQn].BIT.PRI = 2; /* Set Priority */
INTC.IELR[INT1_IRQn].BIT.IRQMD = 0x03; /* Set Trigger Mode */
INTC.IER[INT1_IRQn].BIT.EN = 1; /* Enable Interrupt */
```
3. 实现中断处理函数
中断处理函数是在中断发生时被调用的函数。中断处理函数需要根据不同的中断向量进行不同的处理。以下是中断处理函数的定义示例:
```c
void INT0_Handler(void)
{
/* Handle Interrupt 0 */
}
void INT1_Handler(void)
{
/* Handle Interrupt 1 */
}
```
以上就是RH850中断的配置方法。需要注意的是,中断的配置需要根据具体的应用场景进行调整。
阅读全文