你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
f103zeCAN 中断正常执行一段时间后不能退出
[复制链接]
z258121131
提问时间:2017-10-25 11:55 /
大家好,请问憋人调试CAN通信,利用can接收差不多同时发送的两路can信息,周期为20ms,即同一个设备每20ms发送一次信息,有两个这样的设备。程序运行一短时间后始终在中断函数内循环不能退出进入主程序,求高手
void USB_LP_CAN1_RX0_IRQHandler(void)
{
OSIntEnter();
if(CAN_GetITStatus(CAN1,CAN_IT_FMP0))
{
CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
OSSemPost(CANCMDSem);
}
OSIntExit();
}
复制代码
指点,谢谢。
赞
0
收藏
1
评论
7
分享
发布时间:2017-10-25 11:55
举报
请先
登录
后回复
7个回答
寂寞,点燃一支烟
回答时间:2017-11-9 09:14:54
a0a.1 32b0c
这个是不是频繁进中断 还是没有退出去,排查一下!
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
wofei1314
回答时间:2017-11-9 09:21:07
a0a.1 32b0c
67行换个位置试试?
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
1401696616
回答时间:2017-11-9 11:24:55
a0a.1 32b0c
if(fifox==0)
CAN->RF0R|=0X20;//释放FIFO0邮箱
仅供参考
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
1401696616
回答时间:2017-11-9 11:25:42
a0a.1 32b0c
怎么知道不能推出的
赞
0
评论
回复
支持
反对
五哥1
回答时间:2017-11-9 11:25:53
a0a.1 32b0c
同意三楼的,先试下
赞
0
评论
回复
支持
反对
无薪税绵
回答时间:2017-11-9 12:46:36
a0a.1 32b0c
可能是两路数据同时到达,导致出错。
看看相差函数有没有使用 while 作死循环判断的,
如果有,建议为其增加超时退出功能。
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
z258121131
回答时间:2017-11-9 13:48:53
a0a.1 32b0c
邮箱不用释放,看函数的接收函数内有释放操作;
由于使用了ucosII操作系统,在终端中处理消息并发送同步信号操作,后改为事件标志组可以正常运行,因此应该与任务的调度方式有关,后面进一步分析,谢谢各位!
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
评分
查看全部评分
CAN->RF0R|=0X20;//释放FIFO0邮箱
仅供参考
评分
查看全部评分
看看相差函数有没有使用 while 作死循环判断的,
如果有,建议为其增加超时退出功能。
评分
查看全部评分
由于使用了ucosII操作系统,在终端中处理消息并发送同步信号操作,后改为事件标志组可以正常运行,因此应该与任务的调度方式有关,后面进一步分析,谢谢各位!