http://blog.csdn.net/niepangu/article/details/38842073

“如果你用的CAN引脚是PA11和PA12,接收中断用CAN1_RX0_IRQn。如果CAN引脚用的是PB8和PB9,也就是用重定义的引脚,接收中断用CAN1_RX1_IRQn。由于PA11和PA12也是USB的引脚,所以非互联型且带CAN控制器的微控制器的库文件在起名字时用了USB_LP_CAN1_RX0_IRQn。”

以上内容参考于网络,后经证实,以上说法是不正确的,理由如下:

STM32有2个3级深度的接收缓冲区:FIFO0和FIFO1,每个FIFO都可以存放3个完整的报文,它们完全由硬件来管理。如果是来自FIFO0的接收中断,则用CAN1_RX0_IRQn中断来处理。如果是来自FIFO1的接收中断,则用CAN1_RX1_IRQn中断来处理。在CAN的初始化配置过程中,用CAN_FilterFIFOAssignment来选择要使用FIFO。

示例如下:

1. 配置过滤器
 CAN_FilterInitStructure.CAN_FilterNumber = 0;

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 = 0;   //关联FIFO0

CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;

CAN_FilterInit(&CAN_FilterInitStructure);

CAN_FilterInitStructure.CAN_FilterNumber = 14;

CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 1;   //关联FIFO1

CAN_FilterInit(&CAN_FilterInitStructure);

2. 开启CAN中断

/* IT Configuration for CAN1 */

CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);

CAN_ITConfig(CAN1, CAN_IT_FMP1, ENABLE);

/* IT Configuration for CAN2 */

CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);

CAN_ITConfig(CAN2, CAN_IT_FMP1, ENABLE);

3. 中断处理函数

void CAN1_RX0_IRQHandler(void)

{
        CAN_Receive(CAN1, CAN_FIFO0, &CAN1_RxMsg);

//
}

void CAN1_RX1_IRQHandler(void)

{
        CAN_Receive(CAN1, CAN_FIFO1, &CAN1_RxMsg);

//
}

void CAN2_RX0_IRQHandler(void)

{

CAN_Receive(CAN2, CAN_FIFO0, &CAN2_RxMsg);
       //
}

void CAN2_RX1_IRQHandler(void)

{
        CAN_Receive(CAN2, CAN_FIFO1, &CAN2_RxMsg);
        //
}

关于STM32中CAN1_RX0_IRQn和CAN1_RX1_IRQn的使用相关推荐

  1. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

  2. Arduino处理STM32中的多个串口通讯问题

    简 介: 对于在Arduino下开发STM32的程序,对于STM32所具有的三个硬件USART进行测测试.结果显示可以使用这些串口完成相应的数据的输入与输出.但是涉及到以下两个问题,还没有得到解决:问 ...

  3. STM32中GPIO的8种工作模式!

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数 ...

  4. STM32中IO口的8中工作模式

    该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...

  5. STM32中GPIO的8种模式

    STM32中GPIO的8种模式

  6. STM32中NVIC_SystemReset()函数的作用?什么时候用?

    STM32中NVIC_SystemReset()函数的作用?什么时候用? STM32软件复位有两种方式 (1)方式一:NVIC_SystemReset()函数用来复位STM32. 注意1:从SYSRE ...

  7. STM32中的timers中断处理函数

    STM32中的timers中断处理函数 1.在固件库函数里面,用来读取中断状态寄存器的值判断中断类型的函数是: ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, ...

  8. 9.STM32中对SysTick_Init()函数(sysTick_Config()、TimingDelay_Decrement()自定义)和Delay_us()的理解

    STM32中对SysTick_Init()函数(sysTick_Config().TimingDelay_Decrement()自定义)和Delay_us()的理解: 实验:3个LED灯以500ms的 ...

  9. 8.STM32中对ADC1_Config()函数(ADC1_GPIO_Config()和ADC1_Mode_Config())的理解(自定义)测试ADC转换电压值输出到终端上。

    STM32中对ADC1_Config()函数(ADC1_GPIO_Config()和ADC1_Mode_Config())的理解:

最新文章

  1. Centos下安装mysql 总结
  2. 微软发起Java on Azure调查,呼吁Java社区积极参与
  3. 忘掉什么鬼并发,先听完这个故事!
  4. 在IE7下使用Fiddler
  5. 广东网络借贷中介整改验收,留给平台的时间只有8天!
  6. P4720 【模板】扩展卢卡斯定理/exLucas(无讲解,纯记录模板)
  7. Linux学习第五篇之文件处理命令touch、cat、tac、more、less、head、tail
  8. c# 与 c++ 界面同框终极技巧
  9. 深度学习VS机器学习——到底什么区别
  10. python培训内幕_刚刚,Python 内幕被爆出!老码农:没控制住,心态已崩!
  11. RocketMq在windows下安装
  12. 犯了这15个错误,你可能会上征信“黑名单”
  13. 第19部分- Linux x86 64位汇编GDB单步调试
  14. 月薪4万是一种什么样的感受?
  15. websocket服务器无响应,WebSocket服务器因某些原因无法正常工作(WebSocket server not working for some reasons)...
  16. FusionCharts Free
  17. 英特尔会是下一个诺基亚吗?
  18. myeclipse下载git中的代码步骤
  19. linux下编译GCC
  20. 螺栓不松没事,一松就断?是什么原因?

热门文章

  1. 聊聊成为大神路上的过程
  2. Python eval函数用法简介
  3. Java求n以内素数_求0到n之间素数个数的序列(Java)
  4. oracle locked time,Oracle里面的用户smsdb无法登录 LOCKED(TIMED)
  5. 国内数据中心制冷系统设计与发展
  6. 数据中心在疫情期间发挥的作用
  7. 数据中心节能环保政策汇总分析:2022年新建大型数据中心PUE需达到1.4以下
  8. 串行和并行的区别_入门参考:从Go中的协程理解串行和并行
  9. java什么是服务治理平台_Java | Spring Cloud 是如何实现服务治理的
  10. Py之cupy:cupy的简介、安装、使用方法之详细攻略