1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
发现的问题
在使用洋桃一号开发板测试U盘插拔时,发现洋桃电子官方例程对于Query376Interrupt();函数的疑问。 1,在CH376.h文件中#define CH376_INT GPIO_Pin_15 2,在CH376.C文件中如下定义Query376Interrupt();函数 /******************************************************************************** 描 述 : 查询CH376中断(INT#低电平).* 返 回 : **0:无中断。 1:有中断*********************************************************************************/u8 Query376Interrupt(void){ u8 i; i = GPIO_ReadInputDataBit(CH376_INTPORT,CH376_INT); return( i ); } 答疑之路 对于问题1,了解到GPIOA15是JDTI引脚,只能用于JATG功能;同时,在CH376端口初始化函数CH376_PORT_INIT中针对GPIO_Pin_8做了初始化。结合以上两点判断是例程错误,正确的应该是#define CH376_INT GPIO_Pin_8。 对于问题2,参照CH376官方提供例程,发现l两个Query376Interrupt函数返回值意义相同,同时在filesys.c中的处理情况也完全一致。 /******************************************************************************** 描 述 : 查询CH376中断(INT#低电平).* 返 回 : FALSE(0):无中断。 TRUE(1):有中断.*******************************************************************************/UINT8 Query376Interrupt( void ){ UINT8 i; i = (CH376_INT_WIRE ? FALSE : TRUE ); /* 如果连接了CH376的中断引脚则直接查询中断引脚 */ return( i ); } 出现以上两个问题,但是洋桃电子官方例程仍然能够正常运行。 经过测试:将GPIO_Pin_15改为GPIO_Pin_8时,程序无法正常运行,即无法检测U盘插入。继续修改:将洋桃官方例程Query376Interrupt函数中的语句修改为i = ~GPIO_ReadInputDataBit(Int_Port,Int_Pin);程序恢复正常。 问题解决 解决方法: 1,将洋桃电子例程#define CH376_INT GPIO_Pin_15修改为#define CH376_INT GPIO_Pin_8。在这里,之前的错误程序能运行的原因便是,CH376_INT引脚也就是GPIO_Pin_15总是保持高电平,而调用Query376Interrupt函数的时候就是返回值为1的,也就是GPIO_ReadInputDataBit读出的高电平,这里的凑巧确实让人哭笑不得。 不知道杜洋老师当时是不是只为了程序能够执行出来,而没有仔细检查。 2,在分析了以上情况之后,将Query376Interrupt函数中的i = GPIO_ReadInputDataBit(CH376_INTPORT,CH376_INT);修改为: i = ~GPIO_ReadInputDataBit(Int_Port,Int_Pin); 最终程序完美运行,但是,不要忘记插上PA8与USB INT之间的接线帽。 |
|
1 条评论
|
|
只有小组成员才能发言,加入小组>>
2565 浏览 0 评论
763浏览 1评论
524浏览 0评论
276浏览 0评论
458浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 02:33 , Processed in 1.227793 second(s), Total 81, Slave 63 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号