#define GPIO_LOCK_KEY 0x4C4F434B
#define RED_LED GPIO_PIN_1
#define BLUE_LED GPIO_PIN_2
#define GREEN_LED GPIO_PIN_3
Static int i = 8;
void Int_GPIO_F_Handler(
void){
unsigned long status; status=
GPIOIntStatus(GPIO_PORTF_BASE,true);
GPIOIntClear(GPIO_PORTF_BASE, status);
if((status&GPIO_PIN_4)) {
SysCtlDelay(10*(
SysCtlClockGet()/3000));
while (
GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00);
SysCtlDelay(10*(
SysCtlClockGet()/3000));
TimerEnable(TIMER0_BASE,TIMER_A); }}
void Timer0IntHandler(
void){
TimerIntClear(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
if(i==8) {i=2;}
else {i=i*2;}}
int main(
void){
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3); HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01; HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
TimerConfigure(TIMER0_BASE,TIMER_CFG_PERIODIC);
TimerLoadSet(TIMER0_BASE,TIMER_A,100000000);
IntEnable(INT_TIMER0A);
TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|
GPIO_PIN_3, 0xff);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
IntEnable(INT_GPIOF);
IntMasterEnable();
GPIOPinWrite(GPIO_PORTF_BASE,RED_LED|BLUE_LED|GREEN_LED, RED_LED);
GPIOIntRegister(GPIO_PORTF_BASE,Int_GPIO_F_Handler);
while(1){
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, i); }}
此帖出自
小平头技术问答
一周热门 更多>