CoreTex-M3的中断函数和其他MCU/ARM/DSP都都不同,它就是简单的函数指针<br />typedef union<br />{<br /> void (*pfnHandler)(void);<br /> void * ulPtr;<br />}<br />uVectorEntry;<br /><br />#pragma location = "INTVEC"<br />__root const uVectorEntry g_pfnVectors[] @ "INTVEC" =<br />{<br /> { .ulPtr = __sfe( "CSTACK" ) },<br /> __program_start,<br /> NmiSR, // The NMI handler<br /> FaultISR, // The hard fault handler<br /> IntDefaultHandler, // The MPU fault handler<br />//(uVectorEntry)Keyboard.Exec(),//想这样做未果~~~<br /> SysTickISR, // The SysTick handler<br /> IntDefaultHandler, // The usage fault handler<br />///////<br />};<br /><br />static<br />void SysTickISR(void)<br />{<br /> Keyboard.Exec();<br />}<br /><br />void KeyboardObj::Exec(void);<br /><br />俺想中断函数既然已经是普通的函数,那么怎么让类成员函数变中断函数呢???<br /><br />键盘的散转如2年半前的讨论结果运行正常:<br /><br />void KeyboardObj::Exec(void)<br />{<br />typedef void (KeyboardObj::*FunctionPtr)(void);//类成员函数指针<br />static const FunctionPtr KeyboardCommandTab[3][4] =<br />{<br /> {KeyboardObj::Key01, KeyboardObj::Key02, KeyboardObj::Key03, KeyboardObj::Key04},//放键表<br /> {KeyboardObj::Key11, KeyboardObj::Key12, KeyboardObj::Key13, KeyboardObj::Key14},//短压表<br /> {KeyboardObj::Key21, KeyboardObj::Key22, KeyboardObj::Key23, KeyboardObj::Key24} //长压表<br />};<br />unsigned char KeyCount;<br />//............................<br /> (::Keyboard.*KeyboardCommandTab[1][Count])();//调用类成员函数Key11()~Key14()<br />//.............................................<br />}<br /> <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/showEssence.asp?id=6562&page=3'>https://bbs.21ic.com/club/bbs/showEssence.asp?id=6562&page=3</a>
|