这个是我的程序,采用CAN2口能发送数据,can分析接收的数据,如果用CAN分析仪向控制板发送数据,控制板的接收中断无法进入,这是怎么回事,和别人程序对照没有发现问题呢,请大神指导,

can的配置

如下void Init_CAN2(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;

CAN_InitTypeDef        CAN_InitStructure;

CAN_FilterInitTypeDef  CAN_FilterInitStructure;

NVIC_InitTypeDef  NVIC_InitStructure;

//使能GPIOD的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);

/* Configure CAN2 RX pin */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* Configure CAN2 TX pin */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_CAN2, ENABLE);

//使能CAN时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1 | RCC_APB1Periph_CAN2, ENABLE);

//CAN重置所有参数

CAN_DeInit(CAN2);

//CAN结构体重置

CAN_StructInit(&CAN_InitStructure);

//CAN 初始化

CAN_InitStructure.CAN_TTCM = DISABLE;

CAN_InitStructure.CAN_ABOM = DISABLE;

CAN_InitStructure.CAN_AWUM = DISABLE;

CAN_InitStructure.CAN_NART = DISABLE;

CAN_InitStructure.CAN_RFLM = DISABLE;//不使用接收FIFO锁定功能,这样报文溢出时,新报文将覆盖最后接收到的旧报文

CAN_InitStructure.CAN_TXFP = DISABLE;

CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;

//CAN波特率 =1MBps CAN (在时钟30Mhz)

CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;//重新同步跳跃宽度1个时间单位

CAN_InitStructure.CAN_BS1 = CAN_BS1_13tq;//时间段1为8个时间单位

CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;//时间段2为7个时间单位

CAN_InitStructure.CAN_Prescaler =9;//(pclk1/((1+13+2)*9)) = 36Mhz/16/9 = 250Kbits设定了一个时间单位的长度9

CAN_Init(CAN2, &CAN_InitStructure);

//CAN2的过滤器初始化

CAN_FilterInitStructure.CAN_FilterNumber =14;

CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;

CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;

CAN_FilterInitStructure.CAN_FilterIdHigh =0x0000;

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;

CAN2_FilterInit(&CAN_FilterInitStructure);

//传输

TxMessage.StdId = 0x321;

TxMessage.ExtId = 0x01;

TxMessage.RTR = CAN_RTR_DATA;

TxMessage.IDE = CAN_ID_STD;

TxMessage.DLC = 1;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = CAN2_TX_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = CAN2_SCE_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

/*在操作系统下注册中断函数*/

//  BSP_IntVectSet(BSP_INT_ID_CAN2_TX, BSP_IntHandlerCAN2_TX);     /*Assign ISR handler.Interrupt for which vector will be set*/

//  BSP_IntEn(BSP_INT_ID_CAN2_TX);                              /*Interrupt to enable.*/

//  BSP_IntVectSet(BSP_INT_ID_CAN2_RX0, BSP_IntHandlerCAN2_RX0);     /*Assign ISR handler.Interrupt for which vector will be set*/

//  BSP_IntEn(BSP_INT_ID_CAN2_RX0);                              /*Interrupt to enable.*/

//  BSP_IntVectSet(BSP_INT_ID_CAN2_SCE, BSP_IntHandlerCAN2_SCE);     /*Assign ISR handler.Interrupt for which vector will be set*/

//  BSP_IntEn(BSP_INT_ID_CAN2_SCE);                              /*Interrupt to enable.*/

CAN_ClearITPendingBit(CAN2, CAN_IT_FMP0);//清接收中断标志

CAN_ClearITPendingBit(CAN2, CAN_IT_TME);//清发送中断标志

//      CAN_ITConfig(CAN2,CAN_IT_FMP0|/*!< FIFO 0 message pending Interrupt*/

//CAN_IT_FMP1|/*!< FIFO 1 message pending Interrupt*/

//CAN_IT_FF0|/*!< FIFO 0 full Interrupt*/

//CAN_IT_FF1|/*!< FIFO 1 full Interrupt*/

//CAN_IT_TME|/*!< Transmit mailbox empty Interrupt*/

//CAN_IT_BOF|/*!< Bus-off Interrupt*/

//CAN_IT_EPV|/*!< Error passive Interrupt*/

//CAN_IT_EWG|/*!< Error warning Interrupt*/

//CAN_IT_ERR /*!< Error Interrupt*/

//, ENABLE);

CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);

// CAN_ITConfig(CAN2,CAN2_RX0_IRQn,ENABLE);

}

can接收进入两次中断_STM32的CAN2口无法进入接收中断相关推荐

  1. stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA

    历程详解 详解包括: 中断原理讲解 例程流程详解 库函数分析详解 对应寄存器介绍 对应函数介绍 对应注释详解 本篇文章提供两种方法: 一种是 :IDLE 接收空闲中断+DMA 一种是: IDLE 接收 ...

  2. STM32作为I2C从机中断接收和从模式中断应答数据总结

    之前在项目中用到了STM32F103的i2c功能,大致功能是两个单片机进行i2c通信,而且通信模式是主问从答模式.这里我研究了一下STM32F103硬件i2c作为从机中断接收主设备请求,然后从设备在主 ...

  3. c51两个定时器中断冲突_为什么我如果在一个定时器上用两个中断控制时间的时候,...

    为什么我如果在一个定时器上用两个中断控制时间的时候, [复制链接] 为什么我如果在一个定时器上用两个中断控制时间的时候,在温度高于27和低于27时,流水灯间隔闪烁的时间一样,都是间隔了1秒? #inc ...

  4. 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现

    目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...

  5. Java 技术篇 - 前端浏览器发送一次url请求后端ServerSocket接收到两次请求原因及解决方法,GET /favicon.ico HTTP/1.1问题处理

    效果图如下: 前端发送一次请求,后端接收到两次,第二次是:GET /favicon.ico HTTP/1.1 可以看到页签上标题栏前面是个地球,这个是默认的. 原因就是后台给的响应里没有指定这个图标, ...

  6. hal库开启中断关中断_STM32对HAL库的定时器中断

    从串口中断,到外部中断再到现在的定时器中断,越来越感觉HAL库应用比较好用,虽然一开始理解上面有点怪,但是网上查询一下就能够学会. 定时器中断分为两个重点,1.在应用CUBEMX时配置定时器的分频数以 ...

  7. cubemx spi 中断_STM32 SPI在使用中断时丢弃数据

    我正在尝试使用中断在SPI上发送可变大小的字节数组 . 该系统由两个核STM32L432板组成 . 发送器板工作正常,但我遇到接收器板问题 . 具体来说,我注意到通常会删除一些字节 . 除了CubeM ...

  8. Android 同一个广播接收到两次

    1.这几天在调试Android Ble 与微信蓝牙设备通讯,其中遇到一个非常难以理解的问题,就是使用Fragment 时,同一个设备通过广播发送的数据,我竟然收到3次广播,o(╥﹏╥)o,情况如下: ...

  9. stm32的rxne和idle中断_stm32 USART_IT_IDLE中断 一帧数据

    USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断.也可以叫做一包数据 USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 ...

最新文章

  1. 再见,Kafka!再见,RocketMQ!
  2. Beta冲刺随笔集合
  3. Java未赋值变量的默认初始值
  4. 辽宁师范大学计算机科学与技术在哪个校区,辽宁师范大学有几个校区及校区地址 哪个校区最好...
  5. Java vs Kotlin,Android开发人员应该选择哪种语言?
  6. 做折线图坐标轴数字_Excel折线图表的另类表达制作?牛闪君使用了双线表达法来完成...
  7. springcloud config服务端配置(一)
  8. 程序员:工作3年了,为啥越来越不值钱……
  9. 【爬虫剑谱】二卷2章 实战篇-精美动漫图片爬取并保存
  10. 《程序员修炼之道》笔记(五)
  11. 【故障分析】基于matlab三容水箱故障诊断【含Matlab源码 1485期】
  12. python+django+vue某小区物业管理系统
  13. excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
  14. 高版本linux安装gamit,Ubuntu 14.04下安装GAMIT/GLOBK10.50软件
  15. 什么是邮箱个人签名?邮箱如何设置个人签名?
  16. chipping rate码片速率
  17. python逻辑运算符的优先级_Python逻辑运算符
  18. 交通灯控制器的verilog实现
  19. 18 打印日期 华科复试
  20. c++动态库调试中的脑壳疼

热门文章

  1. ubuntu未发现wifi适配器_Windows 10 9月更新频翻车,1903版本网络适配器又出bug
  2. linux终端<Terminal>使用ping
  3. 如何测试c程序的内存占用_如何写出高效的嵌入式C程序
  4. 单体 soa 微服务 区别_每日一读-从单体到微服务,这些年架构的演变
  5. wpf datagrid 计算两个列的差值_天体到达指定方位角的时间计算
  6. java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
  7. 图像处理——双线性插值(Bilinear Interpolation)
  8. 算法优化——位运算的优化技巧
  9. 折正方体-------------给你出道题
  10. Anconda之常用命令汇总