完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我正在开发一个使用计时器的项目,当我接收计时器的捕获输入,或者当计时器的计数器值等于零(TC中断)时,我想设置一个中断。
问题是,如果我检查两个中断(“TC”和“on Cop-[1-4]”),在主体C中,我不知道哪个中断被触发。 在API中,RealStaseRealSub返回带有寄存器值的UIT8,但我不知道用哪个值来比较它,以知道已经触发了哪种中断。 β-β CysISR(TreSeSyAn中断){ 如果(timeReRealStaseRealStaseSuffes)= = ValueSyth.TythReSeaTcCy中断){ /TC中断 }否则{ //捕获中断 } } |
|
相关推荐
5个回答
|
|
您不十分清楚使用哪一个定时器组件。
对于TCPWM,您必须使用GETBASTIOSSORCEL()函数。对于计时器(V 2.70)打开数据表,转到TimeReRealStaseRebug Stor(),然后单击“状态寄存器”链接,它将带您到TC和捕获的位定义。请记住,在读时,这些位被清除,即TimeReStasuSurtC和TimeReStasuSuTC(在定时器中定义的“h”)。 鲍勃 |
|
|
|
ncmza 发表于 2019-9-19 08:22 谢谢你,鲍伯,我正在使用计时器(V 2.70),你是对的,我应该检查TimeR.StasuSuTC和TimeRistStasuSL俘获。 我的疑问是我应该用什么值来比较TimeRealStaseRealSub()。我的意思是,如果位“TimeRestStutsU.TC”位于状态寄存器中的位置0,我想检查中断是否是由TC中断引起的,我必须使用这样的东西吗? 如果(TimeReRealStaseRebug Stor()= 0000000 1){ /TC中断 } 或者,正如TimeReRealStaseRebug Stor()返回一个UIT8,我只可以比较返回值为: 当状态寄存器中设置了TC位时,它看起来像是这个万亿,所以我必须检查IfTimeReRealStaseRealSub()=1,当CASTORITLE设置在状态寄存器中时,它看起来像这000000个10,所以我必须检查IFTimeReRealStaseRealSub()==2。 |
|
|
|
|
|
|
|
在优化编译器之前,C语言被设计成尽可能短的写这个请求。
逻辑“假”在C中定义为零(0,NULL),逻辑“true”则是布尔相反的WHICH!=零。 要质疑你上面的标志,你不应该做一个比较,等于你想测试的位,因为可能还有另一个位集。最好是——正如Dana建议的那样——执行逻辑,并将结果与非零进行比较。考虑到上面的内容,你可以写 如果(TimeRealRealStaseRebug Stor)和TimeReStasuStTC) 对于两个标志都可能是活动的情况,您应该记住,标记是由READSTATUS RealSub()重新设置的,并且您必须保存第二次查询的值。 鲍勃 |
|
|
|
ncmza 发表于 2019-9-19 08:49 谢谢鲍伯和Dana,明天当我回到大学实验室我会编译它,告诉你它的作品。 |
|
|
|
只有小组成员才能发言,加入小组>>
741个成员聚集在这个小组
加入小组1991 浏览 1 评论
1752 浏览 1 评论
3538 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1683 浏览 6 评论
1459 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
248浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
150浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
344浏览 2评论
290浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
475浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-10 19:20 , Processed in 0.989373 second(s), Total 57, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191