STM32勘误——CAN接收中断到底使用CAN1_RX0_IRQHandler还是USB_LP_CAN1_RX0_IRQHandler

这篇具有很好参考价值的文章主要介绍了STM32勘误——CAN接收中断到底使用CAN1_RX0_IRQHandler还是USB_LP_CAN1_RX0_IRQHandler。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近测试新做的板子,使用了正点原子F407V3版本的HAL库例程代码(因为HAL库在更新,老版本的原子的例程使用的较老的HAL库)。其中CAN通信的中断接收出现了问题,原子例程中的用法为:

开启中断:HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn);
中断函数:void USB_LP_CAN1_RX0_IRQHandler(void);

但是编译错误,提示USB_LP_CAN1_RX0_IRQn未定义,查看库文件确实没有定义(所以猜测原子并没有测试这个地方)。我改成了CAN1_RX0_IRQn,编译成功,但是CAN接收就死机了。于是继续改成void CAN1_RX0_IRQHandler(void),这下数据接受正常了。

实际上我用Cubemx生成的代码里面,默认的就是使用CAN1_RX0_IRQnvoid CAN1_RX0_IRQHandler(void)。(库版本是STM32Cube FW_F4 V1.26.0)。

查看了之前自己用的STM32Cube FW_F4 V1.4.0库时,同样用的CAN1_RX0_IRQnvoid CAN1_RX0_IRQHandler(void),完全就是正常的。

网上说由于PA11和PA12同时是USB引脚,所以CAN中断使用的是USB_LP_CAN1_RX0_IRQn。但经过测试新老版本HAL库都不需要这样用,所以这个地方并不需要搞这么麻烦。评论区的高人知道真正原因的麻烦告知我哈,欢迎交流。文章来源地址https://www.toymoban.com/news/detail-744269.html

到了这里,关于STM32勘误——CAN接收中断到底使用CAN1_RX0_IRQHandler还是USB_LP_CAN1_RX0_IRQHandler的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32使用DMA传输UART空闲中断中接收的数据遇到的问题以及解决方法

    STM32使用DMA传输UART空闲中断中接收的数据遇到的问题以及解决方法 CubeMX配置 串口配置:使用默认配置(传输数据长度为8 Bit,奇偶检验无,停止位为1 Bit, 接收和发送都使能),因为我的是LIN项目所以使用的时串口的LIN模式,一般就是异步通信 打开DMA传输 打开串口接收中断

    2024年02月05日
    浏览(42)
  • STM32_串口中断接收数据_空闲中断

    引言: 1、串口中断接收数据首先要保证完整性(设置串口中断优先级) 2、串口中断接收数据要保证实时性(打开串口空闲中断——空闲时间是2个字节的时间) 3、串口中断接收+DMA缓存,等到需要处理时候在进行处理数据 方法一:直接利用stm32的RXNE和IDLE中断进行接收不定字

    2024年02月13日
    浏览(51)
  • STM32(HAL)串口中断接收

    目录 1、简介 2 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合 本文对HAL串口中断函数进行介绍。 2.1.1 SYS配置  2.1.2 RCC配置 首先在main.c文件中进行接受变量声明。  接着在主函数的while循环中进行接收中断,如下所示:  最后在主函数

    2024年02月14日
    浏览(53)
  • stm32---用外部中断实现红外接收器

    红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传 输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是 家用电器广泛采用,并越来越多的应用到计算机系统中。 红外遥控通信系统一般由红外发射装置和红外接收设备两大部分组成 (1) 红

    2024年02月10日
    浏览(40)
  • STM32 HAL库 串口中断接收数据包

    目录 一、CUBEmx配置 1.设置系统时钟,配置SYS,配置时钟树  ​编辑  2.配置串口USART1 3.配置NVIC,开启串口中断 ​编辑4.点击GENERATE CODE输出文件即可 二、代码部分 0.串口重定向——printf 1.关于舵机 2.开启串口中断函数 3.编写串口回调函数 4.主函数部分 三、实验现象: 四、总

    2024年02月04日
    浏览(44)
  • stm32_断点调试无法进入串口接收中断

    先说结果,可能是stm32调试功能/keil软件/调试器(试过STLINK和JLINK两种)的问题,不是代码; 配置完串口后,可以发送数据到串口助手,但不能接收数据并做处理,所以第一步,想确定有没有接收到单个字节进入中断。 开始打断点调试,发现串口数据寄存器DR能收到数据,串

    2024年02月08日
    浏览(49)
  • 【STM32】HAL库 串口中断发送与接收

    【STM32】HAL库 新建MDK工程 【STM32】HAL库 串口轮询发送 使用stm32串口中断发送和中断接收 在主函数前开启中断,接受字节数为5 接受5个字节后,进入中断接收完成回调函数,重新再开启中断,并把接收到的数据返回 修改接收数组长度,改为开启串口空闲中断 接收事件回调函数

    2024年02月08日
    浏览(63)
  • stm32 can滤波器接收指定的ID

    (slave_id=0x18010001为只接收的id号): 这一步是为了从32位的slave_id中提取出高16位作为CAN过滤器的ID高位部分。 (u32)slave_id 3:首先将slave_id强制转换为32位的无符号整数(u32),然后将其左移3位。这是为了将slave_id向左移动3位,为后续的位运算做准备。 0xFFFF0000:然后将结果与

    2024年01月22日
    浏览(49)
  • 【STM32】HAL库——串口中断只接收到两个字符

    环境:STM32CubeMX(6.7.0)+MDK-ARM(V5.36.0.0)+STM32F103C8T6 使用XCOM发送字符串(总共8个字符),单片机进行解析为ModBus协议失败,只接收到前两个字节的数据。 原串口中断回调函数: 去掉串口中断回调函数的printf函数即可 在嵌入式系统中,将printf函数直接放在串口中断服务程序(ISR)中

    2024年01月22日
    浏览(48)
  • STM32用FreeRTOS串口中断接收卡死问题

    现在意法半导体的配套软件做得很全面了,简直可以说是保姆式的服务。从芯片选型,引脚定义,到代码模板生成,一条龙服务,很方便。但是方便也有方便的坏处,那就是有些细节的规则会造成天然的bug。 比如,在stm32cubeIDE里新建工程的时候,如果勾选了FREERTOS 那么,程序

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包