3501|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32进不了CAN中断,紧急求助。 [复制链接]

CAN报文通过中断接收和发送,CAN_RX , CAN_TX也分别重映射到 PA11和PA12脚上,AFIO时钟和CAN时钟也都使能了,就是不能进中断,求助啊,急。。。。。

程序中的部分如下:
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap1_CAN , ENABLE);
        //-------------- PA11 as CAN_Rx--------------------------
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        //-------------- PA12 as CAN_Tx--------------------------
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);


CAN_InitTypeDef        CAN_InitStructure;
          CAN_FilterInitTypeDef  CAN_FilterInitStructure;
          CAN_DeInit();
          CAN_InitStructure.CAN_TTCM=DISABLE;
          CAN_InitStructure.CAN_ABOM=DISABLE;
        CAN_InitStructure.CAN_AWUM=DISABLE;
        CAN_InitStructure.CAN_NART=ENABLE;
        CAN_InitStructure.CAN_RFLM=DISABLE;                                                                   CAN_InitStructure.CAN_TXFP=DISABLE;
          CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;  

          CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
          CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;
          CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;
          CAN_InitStructure.CAN_Prescaler = 18;
          CAN_Init(&CAN_InitStructure);
        CAN->BTR |=        0xC0000000;
       

          CAN_FilterInitStructure.CAN_FilterNumber=0;          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList;        CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;        CAN_FilterInitStructure.CAN_FilterIdHigh=0x01<<5;
        CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
        CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
        CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;        CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;        CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
          CAN_FilterInit(&CAN_FilterInitStructure);
       
          CAN_ITConfig(CAN_IT_FMP0, ENABLE);
                     CAN_ITConfig(CAN_IT_TME, ENABLE);
        CAN_ITConfig(CAN_IT_BOF,ENABLE);

void USB_LP_CAN_RX0_IRQHandler()
{       
                     CanRxMsg RxMessage;
        u8 i = 0;       
        RxMessage.StdId = 0;
        RxMessage.ExtId = 0;
        RxMessage.IDE = 0;
        RxMessage.RTR = CAN_RTR_DATA;
        RxMessage.DLC = 8;
        RxMessage.FMI = 0;
        for(;i <8 ;i++)
        {
                RxMessage.Data = 0;
        }       
        CAN_Receive(CAN_FIFO0,&RxMessage);
        if(MCB_ID == RxMessage.StdId)               //为所需的报文时,将其放入can报文队列
                EnRecQueue(&recv_can_que, &RxMessage);
}
void USB_HP_CAN_TX_IRQHandler()
{       
        CanTxMsg TxMessage;
        if(!DeSendQueue(&send_can_que,&TxMessage))   //在发送报文队列中取报文发送
                SendFrame(&TxMessage);
}


在正常模式、静默环回和环回模式下都进不了中断。。。。。。
求高手解救啊,急啊。。。。。。
此帖出自ARM技术论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表