欢迎来到天天文库
浏览记录
ID:20267658
大小:179.00 KB
页数:4页
时间:2018-10-08
《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函数来做进一步确定。
此文档下载收益归作者所有