为什么在我的DSP编程中,我的CAN模块总是不停地往外发送数据?有什么办法让它只发一个数据?

[复制链接]
查看11 | 回复2 | 2010-8-28 22:04:03 | 显示全部楼层 |阅读模式
中断程序:
interrupt void ECAN0INTA_ISR(void)// eCAN-A
{
// Insert ISR Code here
Uint16 CAN_RxD_Data = 0;
Uint32 CAN_Rxd_ID = 0;
CAN_RxD_Data
= CAN_RxD_Data;
CAN_Rxd_ID
= CAN_Rxd_ID;
// To receive more interrupts from this PIE group, acknowledge this interrupt
// PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
CAN_RxD_Data = (Uint16)(ECanaRegs.CANGIF0.all&0x1F);
CAN_Rxd_ID = (Uint32)(ECanaMboxes.MBOX0.MSGID.all&0x1FFFFFFF);
CAN_Rxd_ID = ECanaMboxes.MBOX0.MDL.all;
CAN_Rxd_ID = ECanaMboxes.MBOX0.MDH.all;
switch(CAN_Rxd_ID)
{

case CAN_ID1:
{

break;
}
default:

break;
}
ECanaRegs.CANRMP.all
= 0xFFFFFFFF;
ECanaRegs.CANGIF0.all
= 0xFFFFFFFF;
PieCtrlRegs.PIEACK.bit.ACK9 = 1;
那么请问如何关中断程序呢?或者说用哪个寄存器控制啊?

回复

使用道具 举报

千问 | 2010-8-28 22:04:03 | 显示全部楼层
你贴上来的代码貌似接收中断处理程序,你应该看看发送中断怎么处理的,如果buffer里的数发送完了就把发送中断关掉,等发送buffer有数据了再打开中断就行了。
回复

使用道具 举报

千问 | 2010-8-28 22:04:03 | 显示全部楼层
要结合主程序看才知道,你把主程序发上来。要么就是PieCtrlRegs.PIEACK.bit.ACK9 = 0; 让中断只进一次。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行