查看: 6440|回复: 10

[其他] PE生成代码的中断为什么没有相应的中断向量表?

[复制链接]

该用户从未签到

3

主题

9

帖子

0

新手上路

Rank: 1

积分
29
最后登录
2018-8-17
发表于 2018-8-13 13:11:08 | 显示全部楼层 |阅读模式
请问,PE没有中断向量表的情况是怎么回事?相关的中断还会如期产生吗?
该怎么处理?至少到目前为止我的代码中中断没有发生过。。。

还是我的PE有问题?

最佳答案

reuterklin 发表于 2018-8-13 15:50 这个提示"Generate ISR" option 在CW中一直没有找到相应的设置选项,不知道不设置影响是怎么样的。 ... 把你工程发我,我给你看看。 你需要保证PE_ISR(Uart1_isr_hand ...
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25494
最后登录
2025-9-9
发表于 2018-8-13 15:15:27 | 显示全部楼层
不是中断没发生,是你没有添加中断服务函数。
不知道你用的什么芯片,什么IDE?
可以把代码发出来看看。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

9

帖子

0

新手上路

Rank: 1

积分
29
最后登录
2018-8-17
 楼主| 发表于 2018-8-13 15:48:11 | 显示全部楼层
小恩GG 发表于 2018-8-13 15:15
不是中断没发生,是你没有添加中断服务函数。
不知道你用的什么芯片,什么IDE?
可以把代码发出来看看。 ...

/*
** ===================================================================
**     Method      :  UART1_Init (component Init_UART)
**     Description :
**         This method initializes registers of the UART module
**         according to the Peripheral Initialization settings.
**         Call this method in user code to initialize the module. By
**         default, the method is called by PE automatically; see "Call
**         Init method" property of the component for more details.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void UART1_Init(void)
{
  /* SIM_SCGC: UART1=1 */
  SIM_SCGC |= SIM_SCGC_UART1_MASK;
  /* UART1_C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */
  UART1_C2 = 0x00U;
  /* UART1_BDH: LBKDIE=0,RXEDGIE=0,SBNS=0,SBR=0 */
  UART1_BDH = UART_BDH_SBR(0x00);
  /* UART1_BDL: SBR=0x34 */
  UART1_BDL = UART_BDL_SBR(0x34);
  /* UART1_C1: LOOPS=0,UARTSWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0 */
  UART1_C1 = 0x00U;
  /* UART1_S2: LBKDIF=1,RXEDGIF=1,??=0,RXINV=0,RWUID=0,BRK13=0,LBKDE=0,RAF=0 */
  UART1_S2 = (UART_S2_LBKDIF_MASK | UART_S2_RXEDGIF_MASK);
    (void) UART1_S1;                   /* Dummy read of the UART1_S1 register to clear flags */
    (void) UART1_D;                    /* Dummy read of the UART1_D register to clear flags */
  /* UART1_C3: R8=0,T8=0,TXDIR=0,TXINV=0,ORIE=0,NEIE=0,FEIE=1,PEIE=0 */
  UART1_C3 = UART_C3_FEIE_MASK;
  /* UART1_C2: TIE=0,TCIE=0,RIE=1,ILIE=0,TE=1,RE=1,RWU=0,SBK=0 */
  UART1_C2 = (UART_C2_RIE_MASK | UART_C2_TE_MASK | UART_C2_RE_MASK);
}

/*
** ###################################################################
**
**  The interrupt service routine(s) must be implemented
**  by user in one of the following user modules.
**
**  If the "Generate ISR" option is enabled, Processor Expert generates
**  ISR templates in the CPU event module.
**
**  User modules:
**      main.c
**      Events.c
**
** ###################################################################
** */
PE_ISR(Uart1_isr_handler)
{
// NOTE: The routine should include actions to clear the appropriate
//       interrupt flags.
//
}

///////////////////////////////////////////////

我是第一次使用这个CW,知道需要添加相应的代码,但是,从上面看,是不是只要在
PE_ISR(Uart1_isr_handler)下添加就可以了?我还是不太放心 ,一直没有看到那个中断向量。

谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

9

帖子

0

新手上路

Rank: 1

积分
29
最后登录
2018-8-17
 楼主| 发表于 2018-8-13 15:50:02 | 显示全部楼层
reuterklin 发表于 2018-8-13 15:48
/*
** ===================================================================
**     Method      :  UA ...

这个提示"Generate ISR" option
在CW中一直没有找到相应的设置选项,不知道不设置影响是怎么样的。
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25494
最后登录
2025-9-9
发表于 2018-8-13 16:57:09 | 显示全部楼层
reuterklin 发表于 2018-8-13 15:50
这个提示"Generate ISR" option
在CW中一直没有找到相应的设置选项,不知道不设置影响是怎么样的。 ...

把你工程发我,我给你看看。
你需要保证PE_ISR(Uart1_isr_handler)是中断向量表里面定义的。
中断向量表里面都没加代码啊?需要清除下接收标志。
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25494
最后登录
2025-9-9
发表于 2018-8-13 16:57:43 | 显示全部楼层
还有告诉我下你用的是什么芯片呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

9

帖子

0

新手上路

Rank: 1

积分
29
最后登录
2018-8-17
 楼主| 发表于 2018-8-13 20:46:57 | 显示全部楼层
小恩GG 发表于 2018-8-13 16:57
还有告诉我下你用的是什么芯片呢?

多谢帮主!

后来发现这个向量表还是有的,在Generated Code目录中。
另外发现,没有使用的中断,其定义都在CPU.h中使用PE_ISR方式进行了定义;
而需要使用的中断,则在相应的外部模块处,使用user 定义的的名称,在Vector.c和nnn_Isr.c/h中进行了定义和引用。

确实如你所说,因为没有代码在中断处理函数中,因此,无法在仿真时进入。
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25494
最后登录
2025-9-9
发表于 2018-8-14 13:44:51 | 显示全部楼层
reuterklin 发表于 2018-8-13 20:46
多谢帮主!

后来发现这个向量表还是有的,在Generated Code目录中。

是的,那么你现在添加了中断处理函数,是否能够成功进入了呢?
还有什么其他问题吗?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

9

帖子

0

新手上路

Rank: 1

积分
29
最后登录
2018-8-17
 楼主| 发表于 2018-8-14 16:30:20 | 显示全部楼层
小恩GG 发表于 2018-8-14 13:44
是的,那么你现在添加了中断处理函数,是否能够成功进入了呢?
还有什么其他问题吗? ...

目前都暂时解决了。

相关的功能实现与目标还算一致。

有问题再请教!
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25494
最后登录
2025-9-9
发表于 2018-8-14 16:57:50 | 显示全部楼层
reuterklin 发表于 2018-8-14 16:30
目前都暂时解决了。

相关的功能实现与目标还算一致。

好的,有新的问题欢迎继续发帖交流!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-11 13:13 , Processed in 0.110417 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表