打印
[STM32F3]

定时器中断里面,进行usb发送数据,出现死机现象

[复制链接]
1128|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
286485111|  楼主 | 2014-3-22 20:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  while(count_in);
   count_in=14;
   UserToPMABufferCopy(&OutData[0], ENDP1_TXADDR, count_in);
   SetEPTxCount(ENDP1, count_in);
   SetEPTxValid(ENDP1);
------------
上面是我定时器里面的代码,
下位机运行不稳定,程序能正常跑10多秒,然后有时会进去while(count_in);里面,就再也出不来
死机的原因,我在具体寻找中
有人能分析下吗? 求帮忙 谢谢
沙发
286485111|  楼主 | 2014-3-22 21:02 | 只看该作者
本帖最后由 286485111 于 2014-3-22 23:48 编辑

         while(count_in!=0)
         {
                 for(sum=0;sum<9999999;sum++);
                 STM_EVAL_LEDOn(LED3);
                 for(sum=0;sum<9999999;sum++);
                 STM_EVAL_LEDOff(LED3);
                 flag=1;
         }
------------------------
我把while(count_in) 改成这样
发现灯会亮灭交替
现在问题就是,为什么有时count_in能成功清零,  有时不可以?
我usb发送callback函数是这样写的
void EP1_IN_Callback(void)
{
  count_in = 0;
}
会不会是usb发送完毕后,usb中断比定时器中断优先级低,所以在定时器中断里面,callback函数调用失效

我自己解决了,中断优先级的问题
自己不能给自己评分,斑竹帮忙结贴吧。thx

使用特权

评论回复
板凳
airwill| | 2014-3-23 09:12 | 只看该作者
由于 USB 是由中断驱动的, 看样子, 中断优先级的设置也很重要. 感谢楼主的提醒.

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝