原贴链接:http://www.openedv.com/forum.php?mod=viewthread&tid=69
GPIO不像TIMER那么复杂,相信大家都比较容易看懂,这里只是提出几个应该注意的地方,以及对几个库函数进行简单的讲解 !这路,我是彻底的抛开寄存器操作,让没有寄出的朋友只要用到库也能操作M051. 如有不详或错误请大家指正!
1.IO复用的时候,一定记得初始化,用到的库函数:
DrvGPIO_InitFunction(E_FUNC_UART0);
2.IO的模式一定要清晰:
DrvGPIO_Open(E_PORT3,E_PIN6,E_IO_OUTPUT);
输出输入一定要明确;
有种状况,比如我们在往一个IO上面输出某个电平给LED,下次我需要得到上次LED的状态,我们只需要调用 DrvGPIO_GetDoutBit(port, pin)即可
3.外部中断:
DrvGPIO_InitFunction(E_FUNC_EXTINT0);
DrvGPIO_EnableEINT(E_EINT0_PIN,E_IO_BOTH_EDGE,E_MODE_EDGE,(EINT_CALLBACK)EINT0_Callback_Function); //E_EINT0_PIN P3.2
4.IO中断:
// DrvGPIO_Open(E_PORT1, E_PIN0,E_IO_INPUT);
DrvGPIO_EnableInt(E_PORT1, E_PIN0, E_IO_BOTH_EDGE, E_MODE_EDGE);
DrvGPIO_SetIntCallback((P0P1_CALLBACK)INTP0P1_Callback_Function, (P2P3P4_CALLBACK)INTP2P3P4_Callback_Function);
|