打印
[STM32F1]

请教:关于CAN中断接收数据的问题,请高手们不吝赐教

[复制链接]
3805|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pcf00|  楼主 | 2017-3-3 18:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请教一个关于于CAN中断接收数据的问题:
在STM32的CAN通信中,采用中断方式接收数据,但发现一个问题,就是 主机发一组数据下去,从机收到后返回一组数据给主机;然后主机就像死机一样不动了。这里猜想应该是产生了中断。然后关闭中断,采用查询的方式读取数据则可以正确读取,不知道怎么回事,求教了。
// 中断函数
void USB_LP_CAN1_RX0_IRQHandler(void)
{
  //u8 rxbuf[8];
  u32 id;
  u8 ide,rtr,len;
        u8 i;
  Can_Rx_Msg(0,&id,&ide,&rtr,&len,CAN_RBuf);
  //CanRxLong = len;
  SYS_Flag.SYS_canrxfg = 1;
        CAN->RF0R = 1<<5;
        
        for(i=0;i<CanRxLong;i++)
          UART1_Send_1Byte(CAN_RBuf[i]);
        
        LED6  ^=1;

沙发
lxyppc| | 2017-3-3 20:22 | 只看该作者
楼主先要回答这几个问题
你的一组数据是多少,对应的can是多少帧,每帧间隔是多少
中断产生频率,中断执行一次的时间

使用特权

评论回复
板凳
zoomdy| | 2017-3-3 21:19 | 只看该作者
有可能是没有清除中断标志,退出中断后又进入了,不断这样重复。

使用特权

评论回复
地板
pcf00|  楼主 | 2017-3-6 10:24 | 只看该作者
lxyppc 发表于 2017-3-3 20:22
楼主先要回答这几个问题
你的一组数据是多少,对应的can是多少帧,每帧间隔是多少
中断产生频率,中断执行 ...

一帧8个数据(用户的),发送间隔在800ms左右,应该足够响应了

使用特权

评论回复
5
pcf00|  楼主 | 2017-3-6 10:25 | 只看该作者
zoomdy 发表于 2017-3-3 21:19
有可能是没有清除中断标志,退出中断后又进入了,不断这样重复。

CAN->RF0R = 1<<5;

这句应该是清除中断标记吧,其他的没看到

使用特权

评论回复
6
xmshao| | 2017-3-6 16:12 | 只看该作者
本帖最后由 xmshao 于 2017-3-6 16:14 编辑

确认下上面各位提到的中断标志的清除问题【如果开启了中断接收的话】;

STM32F1系列根据芯片FLASH容量及外设差异分几个不同的启动文件,确认下选择了正确的启动文件;

使用特权

评论回复
7
pcf00|  楼主 | 2017-3-6 19:46 | 只看该作者
xmshao 发表于 2017-3-6 16:12
确认下上面各位提到的中断标志的清除问题【如果开启了中断接收的话】;

STM32F1系列根据芯片FLASH容量及外 ...

选用的是STM32F103C6T8,  32K的flash  ,启动文件startup_stm32f10x_ld.s,应该没问题吧

使用特权

评论回复
8
pcf00|  楼主 | 2017-3-6 19:47 | 只看该作者
第一次系统性的用STM32芯片做产品,请各位指教了。。。

使用特权

评论回复
9
xmshao| | 2017-3-7 10:09 | 只看该作者
pcf00 发表于 2017-3-6 19:46
选用的是STM32F103C6T8,  32K的flash  ,启动文件startup_stm32f10x_ld.s,应该没问题吧

这样的话启动文件没选择错。

再找找原因。

使用特权

评论回复
10
pcf00|  楼主 | 2017-3-7 17:30 | 只看该作者
仿真的时候看了一下,死在 startup_stm32f10x_ld.s  文件这里了
这是什么问题?!

wer.JPG (389.92 KB )

wer.JPG

使用特权

评论回复
11
pcf00|  楼主 | 2017-3-7 18:03 | 只看该作者
OK,问题搞定了,多谢各位抽时间指导  

使用特权

评论回复
12
凌芸箫| | 2019-1-14 12:44 | 只看该作者
pcf00 发表于 2017-3-7 18:03
OK,问题搞定了,多谢各位抽时间指导

能请教一下,是怎么解决的吗? 遇到相同的问题・_・?

使用特权

评论回复
13
hyhjhnhg| | 2019-1-14 14:22 | 只看该作者
在接收中断处理函数里面直接发送数据,这个方式不太好吧?

使用特权

评论回复
14
yklstudent| | 2019-1-22 21:09 | 只看该作者
中断函数搞错了?

使用特权

评论回复
15
pcf00|  楼主 | 2019-4-8 17:01 | 只看该作者
凌芸箫 发表于 2019-1-14 12:44
能请教一下,是怎么解决的吗? 遇到相同的问题・_・?

我记得问题好像是TJA1050驱动IC的问题,换了就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

308

帖子

2

粉丝