OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3899|回复: 1

如何检测USB线的插入和拔出?

[复制链接]

138

主题

362

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2012-9-17
在线时间
29 小时
发表于 2015-9-8 11:07:18 | 显示全部楼层 |阅读模式
5金钱
问一个问题:我在做USB读卡器试验,想做这样一个功能:在USB线插入和拔出的时候,单片机能够检测到状态,应该怎么做呢? 我在看原子哥的例子程序的时候,是通过这个两个函数来检测的:
//端点1用于数据发送给电脑
void EP1_IN_Callback(void)
{
  Mass_Storage_In();
}
//端点2,用于接收从电脑发送过来的数据
void EP2_OUT_Callback(void)
{
  Mass_Storage_Out();
}
我想问题的是,难道不可以用中断来做么?比如这个函数里不是有中断配置么?
//USB中断配置
void USB_Interrupts_Config(void)
{
  
EXTI->IMR|=1<<18;//  开启线18上的中断
  EXTI->RTSR|=1<<18;//line 18上事件上升降沿触发  
MY_NVIC_Init(1,0,USB_LP_CAN_RX0_IRQChannel,2);//组2,优先级次之
MY_NVIC_Init(0,0,USBWakeUp_IRQChannel,2);     //组2,优先级最高  
}
为什么没有看到原子哥用到这个中断函数呢?  比较纳闷!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-9-8 12:00:53 | 显示全部楼层
IN OUT 這已經是資料的中斷了 去查查Callback的意義

EXTI->RTSR|=1<<18;//line 18上事件上升降沿触发  <<<<這個應該就會去觸發 插入跟拔出了

一般這個LIB庫都會寫好 除非真的要去改什麼功能 不然不會去動它的

一般會留一個函數去檢查現在的狀態值
是不是忙碌中之類的
用單步去找找是哪個參數在記錄這狀態吧>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 00:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表