[STM32F1] 主机就像死机一样不动了

[复制链接]
1215|28
 楼主| morrisk 发表于 2021-2-7 21:56 | 显示全部楼层 |阅读模式
在STM32的CAN通信中,采用中断方式接收数据,但发现一个问题,就是 主机发一组数据下去,从机收到后返回一组数据给主机;然后主机就像死机一样不动了
jlyuan 发表于 2021-2-7 21:59 | 显示全部楼层
应该是产生了中断
 楼主| morrisk 发表于 2021-2-7 22:02 | 显示全部楼层
关闭中断,采用查询的方式读取数据则可以正确读取,不知道怎么回事,求教了。
juventus9554 发表于 2021-2-7 22:03 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| morrisk 发表于 2021-2-7 22:07 | 显示全部楼层

// 中断函数
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;

dingy 发表于 2021-2-7 22:09 | 显示全部楼层
你的一组数据是多少
xxrs 发表于 2021-2-7 22:11 | 显示全部楼层
对应的can是多少帧
pangb 发表于 2021-2-7 22:13 | 显示全部楼层
每帧间隔是多少
xxrs 发表于 2021-2-7 22:17 | 显示全部楼层
中断产生频率,中断执行一次的时间
kangzj 发表于 2021-2-7 22:20 | 显示全部楼层
有可能是没有清除中断标志,退出中断后又进入了,不断这样重复。
 楼主| morrisk 发表于 2021-2-7 22:22 | 显示全部楼层
一帧8个数据(用户的),发送间隔在800ms左右,应该足够响应了
 楼主| morrisk 发表于 2021-2-7 22:25 | 显示全部楼层

CAN->RF0R = 1<<5;

这句应该是清除中断标记吧,其他的没看到
spark周 发表于 2021-2-7 22:27 | 显示全部楼层
确认下上面各位提到的中断标志的清除问题【如果开启了中断接收的话】;
午夜粪车 发表于 2021-2-7 22:29 | 显示全部楼层
STM32F1系列根据芯片FLASH容量及外设差异分几个不同的启动文件,确认下选择了正确的启动文件;
 楼主| morrisk 发表于 2021-2-7 22:32 | 显示全部楼层
选用的是STM32F103C6T8,  32K的flash  ,启动文件startup_stm32f10x_ld.s,应该没问题吧
 楼主| morrisk 发表于 2021-2-7 22:33 | 显示全部楼层
第一次系统性的用STM32芯片做产品,请各位指教了。。。
chuxh 发表于 2021-2-7 22:36 | 显示全部楼层

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

再找找原因。
 楼主| morrisk 发表于 2021-2-7 22:40 | 显示全部楼层
仿真的时候看了一下,死在 startup_stm32f10x_ld.s  文件这里了
chenjunt 发表于 2021-2-7 22:44 | 显示全部楼层
在接收中断处理函数里面直接发送数据,这个方式不太好吧?
llljh 发表于 2021-2-7 22:46 | 显示全部楼层
中断函数搞错了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

6879

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部