IIC--ZLG7290键盘和LED驱动。
前不久在IIC上接了个ZLG7290做扩充小键盘和LED。所以写了个驱动。下面简单介绍一下做法。
1.配置寄存器
static volatile IOPreg * v_pIOPregs;
v_pIOPregs->rGPEUP |= 0xc000;
v_pIOPregs->rGPECON |= 0xa0000000;
v_pIOPregs->rGPECON &= 0xafffffff;
注意:网上看到的资料都是错误的。明明pdf里面就有说明,为何到处错的都是一样,难道都是抄那篇论文的?
2.中断线程IST
DWORD IIC_IntrThread(PVOID pArg)
{
int count=0;
IIC_InitializeAddresses();//初始化寄存器地址
//设置中断触发时机,如下降沿。代码跟硬件接法有关系
IIC_EnableInterrupt();
gIntrEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!(InterruptInitialize(SYSINTR_IIC, gIntrEvent, 0, 0)))
{
RETAILMSG(1, (TEXT("::: SYSINTR_KEY Init fail/r/n")));
}
MsgID = 0;
while (1)
{
WaitForSingleObject(gPwrIntrEvent, INFINITE);
&n