can接收进入两次中断_STM32的CAN2口无法进入接收中断
这个是我的程序,采用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口无法进入接收中断相关推荐
- stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
历程详解 详解包括: 中断原理讲解 例程流程详解 库函数分析详解 对应寄存器介绍 对应函数介绍 对应注释详解 本篇文章提供两种方法: 一种是 :IDLE 接收空闲中断+DMA 一种是: IDLE 接收 ...
- STM32作为I2C从机中断接收和从模式中断应答数据总结
之前在项目中用到了STM32F103的i2c功能,大致功能是两个单片机进行i2c通信,而且通信模式是主问从答模式.这里我研究了一下STM32F103硬件i2c作为从机中断接收主设备请求,然后从设备在主 ...
- c51两个定时器中断冲突_为什么我如果在一个定时器上用两个中断控制时间的时候,...
为什么我如果在一个定时器上用两个中断控制时间的时候, [复制链接] 为什么我如果在一个定时器上用两个中断控制时间的时候,在温度高于27和低于27时,流水灯间隔闪烁的时间一样,都是间隔了1秒? #inc ...
- 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现
目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...
- Java 技术篇 - 前端浏览器发送一次url请求后端ServerSocket接收到两次请求原因及解决方法,GET /favicon.ico HTTP/1.1问题处理
效果图如下: 前端发送一次请求,后端接收到两次,第二次是:GET /favicon.ico HTTP/1.1 可以看到页签上标题栏前面是个地球,这个是默认的. 原因就是后台给的响应里没有指定这个图标, ...
- hal库开启中断关中断_STM32对HAL库的定时器中断
从串口中断,到外部中断再到现在的定时器中断,越来越感觉HAL库应用比较好用,虽然一开始理解上面有点怪,但是网上查询一下就能够学会. 定时器中断分为两个重点,1.在应用CUBEMX时配置定时器的分频数以 ...
- cubemx spi 中断_STM32 SPI在使用中断时丢弃数据
我正在尝试使用中断在SPI上发送可变大小的字节数组 . 该系统由两个核STM32L432板组成 . 发送器板工作正常,但我遇到接收器板问题 . 具体来说,我注意到通常会删除一些字节 . 除了CubeM ...
- Android 同一个广播接收到两次
1.这几天在调试Android Ble 与微信蓝牙设备通讯,其中遇到一个非常难以理解的问题,就是使用Fragment 时,同一个设备通过广播发送的数据,我竟然收到3次广播,o(╥﹏╥)o,情况如下: ...
- stm32的rxne和idle中断_stm32 USART_IT_IDLE中断 一帧数据
USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断.也可以叫做一包数据 USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 ...
最新文章
- 再见,Kafka!再见,RocketMQ!
- Beta冲刺随笔集合
- Java未赋值变量的默认初始值
- 辽宁师范大学计算机科学与技术在哪个校区,辽宁师范大学有几个校区及校区地址 哪个校区最好...
- Java vs Kotlin,Android开发人员应该选择哪种语言?
- 做折线图坐标轴数字_Excel折线图表的另类表达制作?牛闪君使用了双线表达法来完成...
- springcloud config服务端配置(一)
- 程序员:工作3年了,为啥越来越不值钱……
- 【爬虫剑谱】二卷2章 实战篇-精美动漫图片爬取并保存
- 《程序员修炼之道》笔记(五)
- 【故障分析】基于matlab三容水箱故障诊断【含Matlab源码 1485期】
- python+django+vue某小区物业管理系统
- excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
- 高版本linux安装gamit,Ubuntu 14.04下安装GAMIT/GLOBK10.50软件
- 什么是邮箱个人签名?邮箱如何设置个人签名?
- chipping rate码片速率
- python逻辑运算符的优先级_Python逻辑运算符
- 交通灯控制器的verilog实现
- 18 打印日期 华科复试
- c++动态库调试中的脑壳疼
热门文章
- ubuntu未发现wifi适配器_Windows 10 9月更新频翻车,1903版本网络适配器又出bug
- linux终端<Terminal>使用ping
- 如何测试c程序的内存占用_如何写出高效的嵌入式C程序
- 单体 soa 微服务 区别_每日一读-从单体到微服务,这些年架构的演变
- wpf datagrid 计算两个列的差值_天体到达指定方位角的时间计算
- java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
- 图像处理——双线性插值(Bilinear Interpolation)
- 算法优化——位运算的优化技巧
- 折正方体-------------给你出道题
- Anconda之常用命令汇总