完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近调试项目一个串口通讯功能,在project正常(PieCtrlRegs.PIEIER9.bit.INTx3 = 0; 时一切正常) 情况下,使能SCIB接收中断(PieCtrlRegs.PIEIER9.bit.INTx3 = 1;) 会导致非法中断。接收中断中基本什么都没有干,挂仿真器查看发现 进了第一次中断接收到第一个字节(收到的这个字节是对的)后就再也进不了第二次接收中断,停在ILLEGAL_ISR中。
main() [ ...... InitPeripherals(); EALLOW; PieVectTable.EPWM1_INT = &PWM_LOAD_ISR; PieVectTable.SCIRXINTB = &SWI_SCIBRX_ISR; EDIS; PieCtrlRegs.PIEIER3.bit.INTx1 = 1; PieCtrlRegs.PIEIER9.bit.INTx3 = 1; IER |= M_INT3; IER |= M_INT13; IER |= M_INT9; ...... ] InitPeripherals ()中对SCI初始化如下(这段初始化是从另一个能正常串口通讯的28335项目移植的): ScibRegs.SCICCR.all = 0x0007; ScibRegs.SCICTL1.all = 0x0003; ScibRegs.SCICTL2.bit.TXINTENA = 1; ScibRegs.SCICTL2.bit.RXBKINTENA = 1; //9600 baud @LSPCLK = 25MHz. ScibRegs.SCIHBAUD = 0x0001; ScibRegs.SCILBAUD = 0x0044; ScibRegs.SCIRXST.all = 0x00; ScibRegs.SCIRXEMU = 0x00; ScibRegs.SCIRXBUF.all = 0x00; ScibRegs.SCITXBUF = 0x00; ScibRegs.SCIFFTX.all = 0xE040; ScibRegs.SCIFFRX.all = 0x6061; ScibRegs.SCIFFCT.all = 0x00; ScibRegs.SCIFFTX.bit.TXFIFOXRESET = 1; ScibRegs.SCIFFRX.bit.RXFIFORESET = 1; //ScibRegs.SCIPRI.all = 0x10; ScibRegs.SCIPRI.bit.FREE = 1; ScibRegs.SCICTL1.all = 0x0023; 接收中断如下: void SWI_SCIBRX_ISR(void) [ PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; PieCtrlRegs.PIEIER9.bit.INTx3 = 0; SCI_RX_INT_PROCESS(SCIB_PORT); ScibRegs.SCIFFRX.bit.RXFFOVRCLR = 1; ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1; PieCtrlRegs.PIEIER9.bit.INTx3 = 1; ] void SCI_RX_INT_PROCESS(Uint8 u8sciId) [ Uint16 wRxData; wRxData = ScibRegs.SCIRXBUF.all; ] 进一次SWI_SCIBRX_ISR() 后,继续运行便会停在如下非法中断里 interrupt void ILLEGAL_ISR(void) [ EINT; asm (" ESTOP0"); for(;;); ] 有哪位高手能知道原因吗?希望ti能尽快回复! |
|
相关推荐
3 个讨论
|
|
你的中断函数命名有问题,
void SWI_SCIBRX_ISR(void) [ PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; PieCtrlRegs.PIEIER9.bit.INTx3 = 0; SCI_RX_INT_PROCESS(SCIB_PORT); ScibRegs.SCIFFRX.bit.RXFFOVRCLR = 1; ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1; PieCtrlRegs.PIEIER9.bit.INTx3 = 1; ] 如果是中断服务函数应该是interrupt开头的。 比如:interrupt void DPL_ISR_wFRA(); |
|
|
|
|
|
guigui_7044 发表于 2018-9-27 08:25 从SCI RX中断出来后单步运行一直正常,但按Run运行的时候就立即进ILLEGAL_ISR,向量表初始化确认都对的,SCI中断定义时忘了加关键字interrupt |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
694 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
605 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1065 浏览 1 评论
757 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
529 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
171浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
133浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
130浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
64浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 11:26 , Processed in 1.010560 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号