1 前言
bxCAN占用4个专用的中断向量。通过设置CAN中断允许寄存器(CAN_IER),每个中断源都可以单独允许和禁用。
图1
从图1可以看出,最右边共四个中断,中断是可以通过CAN_IER来屏蔽或允许的。
2 CAN中断允许寄存器 (CAN_IER)
地址偏移量: 0x14
复位值: 0x0000 0000
图2
位31:18 |
保留位,硬件强制为0 |
位17 |
SLKIE: 睡眠中断允许
0: 当SLAKI位被置1时,没有中断产生;
1: 当SLAKI位被置1时,产生中断。 |
位16 |
WKUIE: 睡眠唤醒中断允许
0: 当WKUI位被置1时,没有中断产生;
1: 当WKUI位被置1时,产生中断。 |
位15 |
ERRIE: 错误中断允许
0: 当CAN_ESR寄存器有错误挂号时,没有中断产生;
1: 当CAN_ESR寄存器有错误挂号时,产生中断。 |
位14:12 |
保留位,硬件强制为0。 |
位11 |
LECIE: 上次错误号中断允许
0: 当检测到错误从而硬件对LEC[2:0]写入非0值时,不会对ERRI位置1;
1: 当检测到错误从而硬件对LEC[2:0]写入非0值时,对ERRI位置1。 |
位10 |
BOFIE: 离线中断允许
0: 当BOFF位被置1时,不会对ERRI位置1;
1: 当BOFF位被置1时,对ERRI位置1。 |
位9 |
EPVIE: Error Passive Interrupt Enable
0: 当EPVF位被置1时,不会对ERRI位置1;
1: 当EPVF位被置1时,对ERRI位置1。 |
位8 |
EWGIE: 错误警告中断允许
0: 当EWGF位被置1时,不会对ERRI位置1;
1: 当EWGF位被置1时,对ERRI位置1。 |
位7 |
保留位,硬件强制为0 |
位6 |
FOVIE1: FIFO1溢出中断允许
0: 当FIFO1的FOVR位被置1时,没有中断产生;
1: 当FIFO1的FOVR位被置1时,产生中断。 |
位5 |
FFIE1: FIFO1满中断允许
0: 当FIFO1的FULL位被置1时,没有中断产生;
1: 当FIFO1的FULL位被置1时,产生中断。 |
位4 |
FMPIE1: FIFO1消息挂号中断允许
0: 当FIFO1的FMP[1:0]位被写入非0值时,没有中断产生;
1: 当FIFO1的FMP[1:0]位被写入非0值时,产生中断。 |
位3 |
FOVIE0: FIFO0溢出中断允许
0: 当FIFO0的FOVR位被置1时,没有中断产生;
1: 当FIFO0的FOVR位被置1时,产生中断。 |
位2 |
FFIE0: FIFO0满中断允许
0: 当FIFO0的FULL位被置1时,没有中断产生;
1: 当FIFO0的FULL位被置1时,产生中断。 |
位1 |
FMPIE0: FIFO0消息挂号中断允许
0: 当FIFO0的FMP[1:0]位被写入非0值时,没有中断产生;
1: 当FIFO0的FMP[1:0]位被写入非0值时,产生中断。 |
位0 |
TMEIE: 发送邮箱空中断允许
0: 当RQCPx位被置1时,没有中断产生;
1: 当RQCPx位被置1时,产生中断。
注: 请参考21.5节bxCAN中断。 |
通过上述寄存器,就可以配置允许或屏蔽哪些中断。
3 固件库中如何用代码配置中断
在startup_stm32f2xx.s文件中可以看到下面四个中断:
EXPORT CAN1_TX_IRQHandler [WEAK]
EXPORT CAN1_RX0_IRQHandler [WEAK]
EXPORT CAN1_RX1_IRQHandler [WEAK]
EXPORT CAN1_SCE_IRQHandler [WEAK]
以上为四个中断例程声明,对应着图1右边的四个中断输出。
如何配置中断?使用CAN_ITConfig函数开启或屏蔽中断,如下:
CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE);//打开FMP0中断
如此,便可打开CAN接收中断了。
从图1可以看出,最右边中断有时有可能是最左边某一个中断引起的,因此,当引起最右边的某一中断时,如果最左边有多个对应的中断源的话,如果程序需要,还需进一步确定是由哪个中断源引起的,此时,需要调用CAN_GetITStatus函数来做进一步确定。
分享到:
相关推荐
STM32之CAN---中断管理浅析.mht STM32之CAN---发送管理分析.mht STM32之CAN---工作-测试模式浅析.mht STM32之CAN---接收管理分析.mht STM32之CAN---配置波特率.mht STM32之CAN---错误管理分析.mht
stm32-can-bootloader-master STM32F1XX 系列MCU bootloader CAN 通讯升级,只需要更改APP跳转地址和CANH,CANL 定义口就可以使用了,调试通过
教程 24、stm32机械臂 - 调试PWM舵机机械臂教程 24、stm32机械臂 - 调试PWM舵机机械臂教程 24、stm32机械臂 - 调试PWM舵机机械臂教程 24、stm32机械臂 - 调试PWM舵机机械臂教程 24、stm32机械臂 - 调试PWM舵机机械臂...
教程 27、stm32机械臂 - 手柄控制教程 27、stm32机械臂 - 手柄控制教程 27、stm32机械臂 - 手柄控制教程 27、stm32机械臂 - 手柄控制教程 27、stm32机械臂 - 手柄控制教程 27、stm32机械臂 - 手柄控制教程 27、stm32...
1.STM32_USB-FS-Device_Lib_V3.3.0.rar 2.STM32 最新STM官网USB操作库函数V3.3
stm32_f105-07_f2_f4_usb-host-device_lib STM32_USB-Host-Device_Lib_V2.2.0 内含自定义HID,复合设备例程
基于STM32的CAN-USB转换模块.pdf
stm32f3系列usb4.1.0库 已经使用过
教程 25、stm32机械臂 - 调试总线舵机机械臂教程 25、stm32机械臂 - 调试总线舵机机械臂教程 25、stm32机械臂 - 调试总线舵机机械臂教程 25、stm32机械臂 - 调试总线舵机机械臂教程 25、stm32机械臂 - 调试总线舵机...
教程 29、stm32机械臂 - 微信小程序控制教程 29、stm32机械臂 - 微信小程序控制教程 29、stm32机械臂 - 微信小程序控制教程 29、stm32机械臂 - 微信小程序控制教程 29、stm32机械臂 - 微信小程序控制教程 29、stm32...
stm32f407 can升级固件,测试通过
此代码是基于stm32平台,通过ADC读取MQ-2烟雾传感器代码,可直接修改引脚使用,适合初学者。
源码 27、stm32机械臂 - 手柄控制.zip源码 27、stm32机械臂 - 手柄控制.zip源码 27、stm32机械臂 - 手柄控制.zip源码 27、stm32机械臂 - 手柄控制.zip源码 27、stm32机械臂 - 手柄控制.zip源码 27、stm32机械臂 - ...
stm32-foc-sdk使用指南,中文版
STM32外设USB的官方驱动库,版本:V4.1 已设置最低的1积分
教程 23、stm32机械臂 - USB调试准备教程 23、stm32机械臂 - USB调试准备教程 23、stm32机械臂 - USB调试准备教程 23、stm32机械臂 - USB调试准备教程 23、stm32机械臂 - USB调试准备教程 23、stm32机械臂 - USB调试...
教程 28、stm32机械臂 - 手机APP控制教程 28、stm32机械臂 - 手机APP控制教程 28、stm32机械臂 - 手机APP控制教程 28、stm32机械臂 - 手机APP控制教程 28、stm32机械臂 - 手机APP控制教程 28、stm32机械臂 - 手机APP...
STM32之CAN过滤器分析。在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。为了让大家更加了解CAN接受过滤机制,本文主要讲解过滤器概念、寄存器及相关寄存器的配置。
教程 26、stm32机械臂 - 图形化调试机械臂加mp3语音教程 26、stm32机械臂 - 图形化调试机械臂加mp3语音教程 26、stm32机械臂 - 图形化调试机械臂加mp3语音教程 26、stm32机械臂 - 图形化调试机械臂加mp3语音教程 26...
STM32_USB-Host-Device_Lib_V2.1.0 虚拟串口