|
回复 沙发 academic 的帖子
void Timer0A_ISR (void)
{
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); /* 清除定时器0中断 */
GPIOPinWrite(GPIO_PORTC_BASE, PINS1, GPIOPinRead(GPIO_PORTC_BASE, PINS1) ^ PINS1);
/* 翻转GPIO B6 端口 */
TimerEnable(TIMER0_BASE, TIMER_A); /* 使能定时器0 */
}
void
GPIOCIntHandler(void)
{
GPIOPinIntClear(GPIO_PORTC_BASE, GPIO_PIN_4);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1,GPIO_PIN_1);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_0) ^ GPIO_PIN_0);
}
int main (void)
{
SysCtlClockSet( SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ ); /* 设定晶振为时钟源 */
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB | SYSCTL_PERIPH_GPIOC | SYSCTL_PERIPH_GPIOD | SYSCTL_PERIPH_GPIOE);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 );
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);
GPIOIntTypeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTC_BASE, GPIO_PIN_4);
IntEnable(INT_GPIOC);
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); /* 使能定时器0外设 */
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOC ); /* 使能GPIOB口外设 */
IntMasterEnable(); /* 使能全局中断 */
GPIOPinTypeTimer(TIMER0_BASE, TIMER_A);
GPIODirModeSet(GPIO_PORTC_BASE, PINS1, GPIO_DIR_MODE_OUT);
/* 设置 GPIO B6为输出口 */
GPIOPadConfigSet(GPIO_PORTC_BASE, PINS1, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
/* 配置端口类型 */
GPIOPinWrite(GPIO_PORTC_BASE, PINS1, 0); /* 初始化IO口 */
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); /* 设置定时器0为周期触发模式 */
TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / 2); /* 设置定时器装载值:定时1/2秒 */
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); /* 设置定时器为溢出中断 */
TimerEnable(TIMER0_BASE, TIMER_A); /* 使能定时器0 */
IntEnable(INT_TIMER0A); /* 使能定时器0外设 */
while (1) {
;
}
只要不触发 中断 程序正常运行。。。 只要触发中断 就死 也不进入中断程序 |
|