LM3S9B96的CAN中断服务函数疑问

2019-03-24 12:53发布

//*****************************************************************************
// CAN中断服务函数
//*****************************************************************************
void
CANIntHandler(void)
{
    unsigned long ulStatus;   
    ulStatus = CANIntStatus(CAN0_BASE, CAN_INT_STS_CAUSE);
    if(ulStatus == CAN_INT_INTID_STATUS)//中断产生的原因是一个状态中断
    {
        ulStatus = CANStatusGet(CAN0_BASE, CAN_STS_CONTROL);//读取主控制器状态寄存器
        //在读取主控制器状态寄存器时,将清除一个正在挂起的状态中断。        
        // 表示有错误发生
        g_bErrFlag = 1;
    }

    else if(ulStatus == 1)//表示具有高优先级编号1的报文对象正在挂起一个中断
    {        
        CANIntClear(CAN0_BASE, 1);//清楚报文对象中断
        g_ulMsgCount++;//中断次数递增
        g_bErrFlag = 0;//清楚错误标记
    }
}

中断产生的原因是一个状态中断,这个状态中断是什么意思呢? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
Study_Stellaris
2019-03-24 20:01
< 状态中断,当然是表示状态的。
找一个 CAN 协议的书看看,这些就都明白了。

一周热门 更多>

相关问题

    相关文章