0

我目前正在从 PS/2 鼠标读取值,它运行良好!- 当鼠标发送时钟信号(下降沿)时,我试图只从鼠标读取,所以我试图使用中断。到目前为止,这是我的一些代码:

中断处理程序:

extern struct mouse mouseData;
CY_ISR(PS2_interrupt) { 

    ISR_getMouseData(&mouseData);

}

这个中断给了我以下结果,这是完美的: 在此处输入图像描述

我将鼠标向右移动,它输出了正确的东西,但是我不能在主 for 循环中做任何事情。例如,如果我在主循环中的显示器上打印一些东西,什么都不会发生,但它仍然可以从鼠标读取数据,只要鼠标发送..

我发现你应该使用这个函数清除中断:

isr_PS2_clock_ClearPending()

当我在中断处理程序中编写这个函数时,我会得到这个: 在此处输入图像描述

这与之前的动作相同,但如您所见,数据已损坏。但是,只要不调用中断,我就可以在主循环中执行操作。

在处理中断方面我做错了什么?

4

1 回答 1

0

尝试使用isr_PS2_clock_ClearInterrupt() 清除标志

于 2017-07-30T18:27:13.763 回答