07--stm32之can---中断管理浅析

07--stm32之can---中断管理浅析

ID:20267658

大小:179.00 KB

页数:4页

时间:2018-10-08

07--stm32之can---中断管理浅析_第1页
07--stm32之can---中断管理浅析_第2页
07--stm32之can---中断管理浅析_第3页
07--stm32之can---中断管理浅析_第4页
资源描述:

《07--stm32之can---中断管理浅析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、STM32之CAN---中断管理浅析1刖目bxCAN占用4个专川的巾断向量。通过设置CAN巾断允许寄存器(CANJER),每个巾断源都可以单独允许和禁用。图1从图1可以看出,最右边共四个中断,中断是可以通过CANJER来屏蔽或允许的。2CAN中断允许寄存器(CAN_IER)地址偏移量:0x14复位值:0x0000000031302928272625242322212019181716保留SLKIEWKVIE15141312111098—65432rw1rw0ERRIE保留LECIEBOFIEEPVIEEIGIE保aEOVIElFFIE1FOVIElFFIEOFMPIEOTMEIEnrresrw

2、rvrwrwresrwrwrwrwrwrvrw图2位31:18保留位,硬件强制为0位17SLKIE:睡眠中断允许0:当SLAKT位被置1吋,没有中断产生;1:当SLAKI位被置1时,产生中断。位16WKUIE:睡眠唤醒中断允许0:当WKUI位被置1时,没有中断产生;1:当WKUT位被置1吋,产生中断。位15ERRIE:错误中断允许0:当CAN_ESR寄存器有错误挂号时,没有中断产生;1:当CAN_ESR寄存器有错误挂号吋,产生中断。位14:12保留位,硬件强制为0。位11LECIE:上次错误号中断允许0:当检测到错误从而硬件对LEC[2:0]写入非0值吋,不会对ERRT位置1;1:当检测到错误

3、从而硬件对LEC[2:0]写入非0值时,对ERR1位置1。位10BOFTE:离线中断允许0:当BOFF位被置1时,不会对ERRI位置1;1:当BOFF位被置1时,对ERR1位置1。位9EPVIE:ErrorPassiveInterruptEnable0:当EPVF位被置1吋,不会对ERRT位置1;1:当EPVF位被置1时,对ERRI位置1。位8EWGIE:错误警告中断允许0:当RWGF位被置1吋,不会对ERRT位置1;1:当EWGF位被置1时,对ERRI位置1。位7保留位,硬件强制为0位6FOVIE1:FIFO1溢出中断允许0:当FIF01的F0VR位被置1时,没有中断产生;1:当FTF01的

4、F0VR位被置1吋,产生中断。位5FFIE1:FIF01满中断允许0:当FIF01的FULL位被置1时,没有中断产生;1:当FTF01的FULL位被置1吋,产生中断。位4FMPIE1:FIF01消息挂号中断允许0:当F1F01的FMP[1:O]位被写入非0值时,没有中断产生;1:当FIF01的FMP[1:O]位被写入非0值时,产生中断。位3F0VIE0:FIF00溢出中断允许0:当FIF00的F0VR位被置1时,没有中断产生;1:当FIF00的F0VR位被置1时,产生中断。位2FFIEO:FIF00满中断允许0:当FIF00的FULL位被置1时,没有中断产生;1:当F1F00的FULL位被置1

5、时,产生中断。位1FMPIEO:FIF00消息挂号中断允许0:当FIF00的FMP[1:O]位被写入非0值时,没有中断产生;1:当F1F00的FMP[1:O]位被写入非0值时,产生中断。位0TMETE:发送邮箱空中断允许0:当RQCPx位被置1时,没有中断产生;1:当RQCPx位被置1时,产生中断。注:请参考21.5节bxCAN中断。通过上述寄存器,就可以配置允许或屏蔽哪些中断。3固件库中如何用代码配置中断在startup_stm32f2xx.s文件中町以看到卜面四个中断:[cpp]viewplaincopy1.EXPORTCANl—TX—IRQHandler[WEAK]2.EXPORTCAN

6、1_RX0一IRQHandler[WEAK]3.EXPORTCAN1—RXl—IRQHandler[WEAK]4.EXPORTCAN1—SCE—IRQHandler[WEAK]以上为四个中断例程声明,对应着图1右边的四个屮断输出。如何配罝中断?使用CANJTConfig函数开启或屏蔽屮断,如下•-[cpp]viewplaincopy1.CAN_ITConfig(CANl,CAN_IT_FMP0,ENABLE);//打开FMP0中断如此,便可打开CAN接收中断了。从图1可以看出,最右边屮断有时有可能是最左边某一个屮断引起的,因此,当引起最右边的某一中断时,如果最左边有多个对应的屮断源的话,如果程

7、序需要,还需进一步确定是由哪个中断源引起的,此时,需要调用CAN_GetlTStatus函数来做进一步确定。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。