Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
drv_can.c_CAN设备驱动
GD32
gd32f107 can中断问题
发布于 2025-06-16 22:39:48 浏览:365
订阅该版
之前一直用m4核的片子,gd st都有,目前没大的问题。 这次因为是一个小型的应用,所以同事选了gd32f107这个片子。开始我也没当回事,m3、m4的在应用上也没什么太大区别。板子周六上午焊好,因为时间紧急我还去加了个班,到周六下午3点左右其它的外设都调完了,结果一直到发帖的时候还是有问题,发到这里看看有没有朋友有办法。 言归正传: 主控 gd32f107 外设 can0 rt版本 5.2.0 编译环境 ubuntu下gcc编译 我先按照现有的驱动方式将107的驱动写好,其它问题边调边解决就不细说了。到最后,不管发送还是接收,只要应该进中断了,控制台就会卡死。发送的话通过can盒接收可以收到一个有效帧数据,说明发送是成功的,接收因为无法走进中断所以收不到数据,我仔细对比了f1和f4的手册,发现can基本是一模一样的,但是f4却没这个问题。接下来我又试了下放弃驱动框架,直接操作+中断的方式,问题依旧。此时我也没有好的办法,想着转成keil仿真一下看看卡在哪里,结果转成keil工程以后,仿真发现它不卡了!!!退出仿真直接上电正常运行,发现系统正常了,可以正常进出tx&rx中断了,我人傻了。 keil编译器版本是ac5 ubuntu gcc有点记不清了,明天去公司看一下再补上。接下来我能做的也就是对比下编译参数、扩大下栈空间什么的,感觉找到原因的希望比较渺茫。 发到这里看看大家有没有相关经验什么的,感谢。 补充:arm-none-eabi-gcc版本 9.2.1
查看更多
1
个回答
默认排序
按发布时间排序
mark301600
2025-06-17
这家伙很懒,什么也没写!
破案了 gcc的启动文件中将CAN0_TX_IRQHandler和CAN0_RX0_IRQHandler这两个中断入口写成了USBD_HP_CAN0_TX_IRQHandler和USBD_LP_CAN0_RX0_IRQHandler,应该是历史遗留问题。同时发现了一个小bug,发送中断处理函数中 ```c if (can_interrupt_flag_get(can_x, CAN_INT_FLAG_MTF0)) { if (can_interrupt_flag_get(can_x, CAN_FLAG_MTFNERR0))//此处应改为can_flag_get(can_x, CAN_FLAG_MTFNERR0)这个接口,否则发送成功了也会判断为未成功,后面几个else if同样 { rt_hw_can_isr(can, RT_CAN_EVENT_TX_DONE | 0 << 8); } else { rt_hw_can_isr(can, RT_CAN_EVENT_TX_FAIL | 0 << 8); } /* Write 0 to Clear transmission status flag RQCPx */ can_interrupt_flag_clear(can_x, CAN_INT_FLAG_MTF0); } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
365
关于作者
mark301600
这家伙很懒,什么也没写!
提问
4
回答
11
被采纳
2
关注TA
发私信
相关问题
1
STUDIO找不到drv_can.c
2
请教如何注册can设备?
3
tm4c129x can驱动程序
4
因为can 的原因,差点让我放弃了RT-Thread 这是一个问题.
5
如何使用开启CAN驱动?
6
RTthread 使用CAN通讯硬件端口怎么配置的?
7
基于F107RC芯片CAN驱动
8
GD32 能否通过设备驱动的方式操作CAN,有没有drv_can.c
9
rtthread是否有GD32F303对应的drv_can驱动
10
执行can_sample后程序卡在_can_sendmsg中
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
【最新活动】RT-Thread论坛活动正在进行(2026年5月活动已更新)
4
国产MCU移植系列教程汇总,欢迎查看!
5
机器人操作系统 (ROS2) 和 RT-Thread 通信
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
五分钟玩转RT-Thread新社区
8
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
9
STM32的“GPU”——DMA2D实例详解
10
RT-Thread隐藏的宝藏之completion
最新文章
1
8月27日上海 | 睿擎工业平台Workshop:EtherCAT实时控制与工业方案实战
2
【RSOC26】第二天学习记录:内核与多线程培训
3
【RSOC26】从启动流程到多线程:RT-Thread 内核学习笔记
4
【RSOC26】第二天学习记录:RT-Thread 启动流程与多线程编程
5
【RSOC26】内核与多线程
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
RT-Thread
SCons
文件系统
RT-Thread Nano
线程
MQTT
STM32
FAL
rt-smart
BSP
cubemx
RTC
WIZnet_W5500
PWM
I2C_IIC
UART
packages_软件包
GD32
ota在线升级
ESP8266
freemodbus
flash
keil_MDK
编译报错
ADC
潘多拉开发板_Pandora
flashDB
Debug
ulog
msh
rt_mq_消息队列_msg_queue
socket
MicroPython
SDIO总线
中断
SFUD
QEMU
本月问答贡献
crystal266
3
个答案
1
次被采纳
CYFS
3
个答案
1
次被采纳
oxlm
1
个答案
1
次被采纳
王棒棒
1
个答案
1
次被采纳
wdfk_prog
1
个答案
1
次被采纳
本月文章贡献
Ewan11111
3
篇文章
1
次点赞
徐VV
2
篇文章
2
次点赞
金阳阳
2
篇文章
1
次点赞
longtsing
1
篇文章
4
次点赞
RTT_Studio
1
篇文章
4
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部