打印

虚拟串口中断求助

[复制链接]
2515|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiejun219|  楼主 | 2011-11-30 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiejun219 于 2011-11-30 10:30 编辑

大家好
我是一个菜鸟
公司老总给我一块板子和代码
让我研究虚拟串口之后移植
现在做的这一步是添加一个中断
使得在虚拟串口发送数据的时候打断其发送
然后再恢复发送
看看数据有没有丢失

void EXTI0_IRQHandler(void)
{
delay_ms(10);//消抖
if(KEY2==1)  //按键2
{
  SetEPTxStatus(ENDP2, EP_TX_NAK); //中断发   
}   
EXTI->;PR=1<<0;  //清除LINE0上的中断标志位  
}

我是移植的外部中断的程序
一步一步走过来
总算可以打断USB的数据发送了
但是怎么都不会恢复

好吧  我承认我菜鸟 白痴了点
忘高手大哥帮帮我
沙发
xiejun219|  楼主 | 2011-11-30 10:18 | 只看该作者
计划是按下wkup按键中断发送数据
然后按下按键1或者按键2恢复发送
void EXTI15_10_IRQHandler(void)
{                       
        delay_ms(10);    //消抖                         
        if(KEY0==0)      //按键0
        {
                /*SetEPTxStatus(ENDP2, EP_TX_VALID); */
                Virtual_Com_Port_Reset();
        }else if(KEY1==0)//按键1
        {
                /*SetEPTxStatus(ENDP2, EP_TX_VALID); */
                Virtual_Com_Port_Reset();
        }
        EXTI->PR=1<<13;     //清除LINE13上的中断标志位  
        EXTI->PR=1<<15;     //清除LINE15上的中断标志位  
}
设置了 SetEPTxStatus(ENDP2, EP_TX_VALID);  不行
reset 虚拟串口也不行

使用特权

评论回复
板凳
香水城| | 2011-11-30 10:59 | 只看该作者
数据发送是不可能被打断的! 因为发送过程不受软件控制,当主机发送IN Token后,设备端会自动送出数据,软件无法干预,除非你关闭USB通道,那将是另外一个问题。

使用特权

评论回复
地板
xiejun219|  楼主 | 2011-11-30 11:04 | 只看该作者
3# 香水城

请问一下 像我的代码里面  我直接写SetEPTxStatus(ENDP2, EP_TX_NAK); //中断发    数据就停止接受了   是端口关闭了吗?

使用特权

评论回复
5
香水城| | 2011-11-30 11:18 | 只看该作者
3# 香水城  

请问一下 像我的代码里面  我直接写SetEPTxStatus(ENDP2, EP_TX_NAK); //中断发    数据就停止接受了   是端口关闭了吗?
xiejun219 发表于 2011-11-30 11:04


如果IN Token还没有到,这样做之后将没有数据发送。

如果数据发送正在进行,则结果不可预知。

不知道你这么做有什么意思,难道想测试程序跑乱后,硬件的反应?

使用特权

评论回复
6
xiejun219|  楼主 | 2011-11-30 11:42 | 只看该作者
5# 香水城
我的目的是在发送数据的时候突发事件让数据停止 然后再恢复数据的发送
就是  按一下按键  数据发送停止了   再按一下按键 数据继续发送了
在这个过程中看有没有数据丢失

使用特权

评论回复
7
香水城| | 2011-11-30 12:02 | 只看该作者
5# 香水城  
我的目的是在发送数据的时候突发事件让数据停止 然后再恢复数据的发送
就是  按一下按键  数据发送停止了   再按一下按键 数据继续发送了
在这个过程中看有没有数据丢失 ...
xiejun219 发表于 2011-11-30 11:42


前面已经说了,如果软件不出错误,数据发送是不可能被停止的。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xiejun219 + 1
8
xiejun219|  楼主 | 2011-11-30 12:08 | 只看该作者
7# 香水城
恩  知道了  谢谢

使用特权

评论回复
9
xiejun219|  楼主 | 2011-11-30 12:51 | 只看该作者
7# 香水城
诶  那我再请问一下   我们通常用USB复制东西的时候   会有一个取消  这个是通过什么来完成的呢

使用特权

评论回复
10
香水城| | 2011-11-30 13:30 | 只看该作者
7# 香水城  
诶  那我再请问一下   我们通常用USB复制东西的时候   会有一个取消  这个是通过什么来完成的呢
xiejun219 发表于 2011-11-30 12:51


用USB复制东西不是只有一次数据传送,这是一个过程,包含很多次数据包传送,"取消"操作是取消未传送的数据包,而不是中止某个数据包。

使用特权

评论回复
11
xiejun219|  楼主 | 2011-11-30 13:59 | 只看该作者
10# 香水城
哦  懂了  谢谢

使用特权

评论回复
12
alnjby| | 2011-12-1 08:42 | 只看该作者
数据发送是不可能被打断的! 因为发送过程不受软件控制







南京耳鼻喉医院
耳鼻喉医院

使用特权

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

本版积分规则

0

主题

8

帖子

1

粉丝