四、我只写了一个简单的测试程序,用中断来控制led的亮灭。下面是全部程序:
#include "bios_hwicfg.h"
#include <csl.h>
#include <csl_gpio.h>
GPIO_Handle hGpio;
Uint32 PinOutID;
Uint32 PinInID;
Uint8 flag = 0;
void main()
{
LOG_printf(&trace, "hi!");
CSL_init();
hGpio=GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
IRQ_globalEnable();//ʹÄÜÈ«¾ÖÖжϿØÖÆλ
IRQ_nmiEnable();
IRQ_enable(IRQ_EVT_EXTINT6);//ÖжÏʹÄÜ£¬Ä¬ÈÏEXTINT7ÊǹرյÄ
IRQ_enable(IRQ_EVT_EXTINT7);//ÖжÏʹÄÜ£¬Ä¬ÈÏEXTINT7ÊǹرյÄ
// GPIOµÄ³õʼ»¯
PinOutID = GPIO_PIN0 | GPIO_PIN9 | GPIO_PIN10 | GPIO_PIN11 | GPIO_PIN12;
PinInID = GPIO_PIN6 | GPIO_PIN7;
GPIO_pinEnable(hGpio,PinOutID | PinInID);
GPIO_pinDirection(hGpio, PinOutID, 1);
GPIO_pinDirection(hGpio, PinInID, 0);
GPIO_pinWrite(hGpio, 1<<9, 1);
GPIO_pinWrite(hGpio, 1<<10, 1);
GPIO_pinWrite(hGpio, 1<<11, 1);
GPIO_pinWrite(hGpio, 1<<12, 1); // GPIO12ÓëadcµÄalert¹Ü½ÅÏàÓ룬¿ØÖƺìÂÌLEDµÄ¿ª¹Ø
for(;;) {}
}
void int_isp6()
{
if((GPIO_pinRead(hGpio, 1<<6)==0))
{
if(flag == 0)
{
GPIO_pinWrite(hGpio, 1<<9, 0);
flag = 1;
}
else
{
GPIO_pinWrite(hGpio, 1<<9, 1);
flag =0;
}
}
LOG_printf(&trace, "interrupt 6 is OK!");
return;
}
void int_isp7()
{
if((GPIO_pinRead(hGpio, 1<<7)==0))
{
GPIO_pinWrite(hGpio, 1<<10, 1);
}
LOG_printf(&trace, "interrupt 7 is OK!");
}
这里有两点需要注意的:
1、中断函数名一定要跟前面第一点里面设置的相同,而且不用再加interrupt关键字。
2、主函数里面应该要写上
|