// SysTick中断示例<br /><br />#include "hw_types.h"<br />#include "hw_memmap.h"<br />#include "hw_ints.h"<br />#include "hw_sysctl.h"<br />#include "hw_gpio.h"<br />#include "interrupt.h"<br />#include "sysctl.h"<br />#include "gpio.h"<br />#include "systick.h"<br /><br />#define SysCtlPeriEn SysCtlPeripheralEnable<br />#define GPIOPinTypeIn GPIOPinTypeGPIOInput<br />#define GPIOPinTypeOut GPIOPinTypeGPIOOutput<br /><br />#define LED GPIO_PORTB_BASE , GPIO_PIN_0<br />#define KEY_JTAG GPIO_PORTA_BASE , GPIO_PIN_2<br /><br />void waitJTAG ( void )<br />{<br /> SysCtlPeriEn ( SYSCTL_PERIPH_GPIOA ) ; /* 使能GPIOA端口 */<br /> GPIOPinTypeIn ( KEY_JTAG ) ; /* 设置按键所在的PA2管脚为输入 */<br /> if ( GPIOPinRead ( KEY_JTAG ) == 0x00 ) { /* 如果有键按下,则进入 */<br /> for ( ; ; ) ; /* 死循环,以等待JTAG连接 */<br /> }<br />}<br /><br />int main ( void )<br />{<br /> waitJTAG ( ) ; /* 防止JTAG失效 */<br /><br /> SysCtlPeriEn ( SYSCTL_PERIPH_GPIOB ) ; /* 使能GPIOB模块 */<br /> GPIOPinTypeOut ( LED ) ; /* 设置LED所在管脚为输出模式 */<br /><br /> SysTickPeriodSet ( 3000000UL ) ; /* 设置SysTick计数器的周期值 */<br /> SysTickIntEnable ( ) ; /* 使能SysTick中断 */<br /> IntMasterEnable ( ) ; /* 使能处理器中断 */<br /> SysTickEnable ( ) ; /* 使能SysTick计数器 */<br /><br /> for ( ; ; ) {<br /> }<br />}<br /><br />/* SysTick计数器的中断服务函数 */<br />void SysTick_ISR ( void )<br />{<br /> static unsigned char ucVal = 0x00 ;<br /><br /> GPIOPinWrite ( LED , ucVal ) ; /* 反转LED显示 */<br /> ucVal ^= 0x01 ;<br />}<br /><br />(zlgmcu_wdx)
|