WinCE6.0 驱动中的中断处理的问题

来源:互联网 发布:linux ssh简介 编辑:程序博客网 时间:2024/05/16 15:26

调试新板的AUDIO部分,声音有出来,所以接着将Headphone的检测,自动mute掉speaker的功能加进去。

将之前的其他处理中断部分copy过来,烧写进去后,插拔耳机,始终进不了中断。查原理图,发现板子已经将

IO口改变,将原来使用此IO口的部分注释掉,新的处理过程才能生效。

发现用memmgr.exe来读内部寄存器挺方便,通过读到的值可以分析出IO口当前的设置,这次就是这小工具帮

了忙。而且程序中调用SET_GPIO这个宏不是那么好用的,定义如下:

#define SET_GPIO(mapped_s, port, portnumber, v)    (mapped_s##->##port |= ((v)<<(portnumber*##port##_BIT_WIDTH)))

只有移位和与操作,而不会先清除这几位。所以

SET_GPIO(g_pGPIOReg, GPNCON, 11, GPNCON_EXTINT);

SET_GPIO(g_pGPIOReg, GPNPUD, 11, GPNPUD_PULLUP);    // GPN[11] set Pull-up Enable

不能达到目的,除非这几位为0。