OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12473|回复: 6

can通讯接收数据量过大,接收中断进入死循环

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-12-17
在线时间
0 小时
发表于 2014-12-18 18:04:56 | 显示全部楼层 |阅读模式
5金钱
//CAN接收数据
//void CAN1_RX1_IRQHandler(void)
//USB和 CAN是共用一组  IO
void USB_LP_CAN1_RX0_IRQHandler(void)
{
// u8 key = 0 ;
// u8 canbuf[8] = {0} ;
// u8 i = 0 ;
   if(SET == CAN_GetITStatus(CAN1,CAN_IT_FF0))  //满中断
   {
        CAN_ClearITPendingBit(CAN1,CAN_IT_FF0);
printf("aa\n");
   }
   else if(SET == CAN_GetITStatus(CAN1,CAN_IT_FOV0))  //溢出中断
   {
        CAN_ClearITPendingBit(CAN1,CAN_IT_FOV0);
printf("bb\n");
   }  
   else if(CAN_GetITStatus(CAN1 , CAN_IT_FMP0))  //1个报文存入
   {
CAN_ClearITPendingBit(CAN1 , CAN_IT_FMP0);
// WriteCANRcvCyBuf(CAN_N0_1);
printf("cc\n");
}
}

上位机向主板发送数据 5ms一个   发送1000个, 当主板接收到第300-400的数据时  会造成  CAN_IT_FMP0 语句分支内死循环。 串口助手上  显示满屏的 cc

下面是 中断配置
//使能中断
#if CAN_RX0_INT_ENABLE

CAN_ITConfig(CAN1,CAN_IT_FMP0 | CAN_IT_FF0 | CAN_IT_FOV0,ENABLE);    //FIFO0消息挂号中断允许.   
CAN_ITConfig(CAN1,CAN_IT_FMP1 | CAN_IT_FF1 | CAN_IT_FOV1,ENABLE);   

  
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;     // 主优先级为1
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            // 次优先级为0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);


不疯魔,不成活!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-12-18 23:12:25 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-12-17
在线时间
0 小时
 楼主| 发表于 2014-12-19 08:56:24 | 显示全部楼层
我顶!~~~~
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2014-12-24
在线时间
0 小时
发表于 2014-12-24 17:34:22 | 显示全部楼层
顶起哦。。。顺便请教一下,为什么我连接收中断都进入不了啊?配置方式应该差不多,是不是有哪里需要特别注意的?
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-12-17
在线时间
0 小时
 楼主| 发表于 2015-1-6 10:52:40 | 显示全部楼层
回复【4楼】robynrao:
---------------------------------
配置方式,我直接用的示例代码。
不疯魔,不成活!
回复

使用道具 举报

7

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2015-11-26
在线时间
27 小时
发表于 2017-9-14 14:40:53 | 显示全部楼层
今天也遇到了这个问题,问人都没人说,或者就是说不清,不知道你解决了吗
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2019-9-25
在线时间
1 小时
发表于 2022-9-3 14:44:25 | 显示全部楼层
你们的CAN网络数据处理是放在中断中进行还是放在循环中根据接收中断置位一个标志位的方式进行读取的呢?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 04:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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