完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我已经研究了计时器16的数据表。他们提到我们只能在汇编中写ISR,但是我不知道如何调用主程序中的中断例程。
感谢和问候 毗湿奴 以上来自于百度翻译 以下为原文 i,ve studied the datasheet of timer 16. They mentioned that we have to write isr in assembly only, but i dont know how to call this interrupt routine from main program. Thanks & Regards Vishnu |
|
相关推荐
5个回答
|
|
如果您想在组装中写入ISR,则可以打开PSoC设计器生成的ISR文件,并在用户代码标记区域内添加代码。例如,如果TimeR16的实例名称是Time16Y1,那么您将在工作空间资源管理器中的“LIB库源文件”中找到ISR文件Time16S1It.ASM。你会在这个文件中找到这样的代码:
Time16161AISR: @ PSoCuxUsCoDeIoByth@(不要更改这行)。 -------------------------------------------- 在这个横幅下面插入自定义代码 -------------------------------------------- 注意:中断服务例程必须保存 A和X CPU的值寄存器。 -------------------------------------------- 在这个横幅上方插入自定义代码 -------------------------------------------- @ pSoCuxUsCoEdEdEd@(不要改变这条线)。 雷蒂 你应该在两个标记中写你的ISR代码。如果你想在C中写一个ISR,那么你必须用一个SyPrimaBaseTracl处理程序来写一个声明为ISR的C函数,然后在上面的ISR文件中把一个LJMP指令放置到这个C函数中。 以上来自于百度翻译 以下为原文 If you want to write the ISR in assembly, then you can open the ISR file generated by PSoC Designer and add code inside the user code marker area. For example, if you Timer16's instance name is TIMER16_1, then you will find the ISR file TIMER16_1int.asm in the "libLibrary Source Files" in the workspace explorer. You will find code like this in this file: _TIMER16_1_ISR: ;@PSoC_UserCode_BODY@ (Do not change this line.) ;--------------------------------------------------- ; Insert your custom code below this banner ;--------------------------------------------------- ; NOTE: interrupt service routines must preserve ; the values of the A and X CPU registers. ;--------------------------------------------------- ; Insert your custom code above this banner ;--------------------------------------------------- ;@PSoC_UserCode_END@ (Do not change this line.) reti You should write your ISR code within the two markers. If you want to write an ISR in C, then you will have to write a C function declared as an ISR using #pragma Interrupt_handler and then place an ljmp instruction to this C function in the above ISR file. |
|
|
|
事实上,这两种方法都有其优点。
理想情况下,汇编是优选的用于写入ISR。当你写一个C ISR,如果在C ISR中还有另一个函数调用,编译器在进入函数之前把所有的虚拟寄存器和页面指针保存到栈中,然后在退出之前恢复它们。由于编译器不知道哪些调用函数将被修改,所以必须保存和恢复所有的虚拟寄存器。这需要很多时间。但是,当你编写一个程序集ISR时,你知道要修改的寄存器,你只会保存和恢复必要的寄存器。这样,ISR将执行得更快。 另一方面,C ISR更易于编写,并且可能被许多人所偏好。 你可以通过使用两者来达到平衡。对于不太关键的ISR,可以使用C ISR。此外,在使用C ISR时,避免从ISR内部调用函数。对于时间紧迫的ISR,使用汇编。 以上来自于百度翻译 以下为原文 Actually both the methods have their merits. Ideally, assembly is preferred for writing an ISR. When you write a C ISR, and if there is another function call from within the C ISR, the compiler saves all the virtual registers and page pointers to the stack before entering the function and restores them before exiting. As the compiler does not know which registers the called function is going to modify, it has to save and restore all the virtual register. This takes a lot of time. But when you write an assembly ISR, you know the registers that are going to be modified and you will save and restore only the necessary ones. This way, the ISR will execute faster. On the other hand, C ISR is easier to write and maybe preferred by many. You could strike a balance by using both. For ISRs that are not very time critical, you can use C ISR. Also, while using C ISR, avoid calling functions from within the ISR. For ISRs that are time critical, use assembly. |
|
|
|
先生,谢谢您提供的信息。
感谢和问候 毗湿奴 以上来自于百度翻译 以下为原文 Sir ,thanks for the given information. Thanks & Regards Vishnu |
|
|
|
先生,我能把我的光传感器TSL23直接与CY8CKIT-1001 DVK接口吗?
建议我如何将TSL355与此工具包连接。 实际上,我的工作是检测不同激光的光强并测量其频率并开发一种非常灵敏的装置。所以我用TSL23 5转换器做我的工作。我需要在PSoC设计师上做这件事。帮助寄给我设计样品,如果可能的代码也。谢谢 以上来自于百度翻译 以下为原文 sir, can i interface my light sensor tsl235 directly with CY8CKIT-001 DVK . Suggest me how i can interface my tsl235 with this kit. Actually my work is to detect light intensity of different laser and measure its frequency and develop a device which is very sensitive. so i m using TSL235 converter for my work. i need to do it on PSoC designer. help send me designing sample and if possible code also. Thanks |
|
|
|
这里是一个应用笔记来测量PSoC 1上的频率。
CyPress公司 问候,Dana。 以上来自于百度翻译 以下为原文 Here is a application note to measure frequency on PSOC 1 - www.cypress.com/ Regards, Dana. |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2100 浏览 1 评论
1846 浏览 1 评论
3665 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1782 浏览 6 评论
1532 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
561浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
413浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
434浏览 2评论
380浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
907浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 15:15 , Processed in 1.143463 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号