SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_INT |SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeTimer(GPIO_PORTF_BASE, GPIO_PIN_2);
GPIOPinConfigure(GPIO_PF2_T1CCP0);
TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_COUNT);
TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_POS_EDGE);
TimerLoadSet(TIMER1_BASE, TIMER_A, 3000);
TimerMatchSet(TIMER1_BASE, TIMER_A, 0);
IntEnable(INT_TIMER1A);
TimerIntEnable(TIMER1_BASE, TIMER_CAPA_MATCH);
TimerEnable(TIMER1_BASE, TIMER_A);
中断函数
void TIMER1A_Handler(void)
{
TimerIntClear(TIMER1_BASE, TIMER_CAPA_MATCH);
g_ui32Flags++;
// TimerEnable(TIMER1_BASE, TIMER_A);
}
中断标准g_ui32Flags 一直等于0
xyz549040622:
你可以参考官方给的例程,烧官方的例程看看
C:\ti\TivaWare_C_Series-2.1.0.12573\examples\boards\dk-tm4c123g\timers
Michael Sun:
是不是进不去中断。
启动文件里面检查是否注册了中断服务程序
gangqiang zhou:
你总中断还像没开
Li Linqing:
回复 Michael Sun:
//主函数里是这样写的
int main (void)
{
FPUEnable(); FPULazyStackingEnable(); // Set the system clock to 80MHz. SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_INT |SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
mysystick_init(80); IntMasterEnable();
Timer_Init() ; //这里调用定时函数
while (1)
{
TimerLoadSet(TIMER1_BASE, TIMER_A, 3000); TimerEnable(TIMER1_BASE, TIMER_A); //这里再使能一下
}
为什么不能进中断呢
Li Linqing:
回复 Michael Sun:
//主函数里面是这样写的
int main (void)
{
FPUEnable();FPULazyStackingEnable(); // Set the system clock to 80MHz.SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_INT |SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
mysystick_init(80);IntMasterEnable();
Timer_Init() ; //这里调用定时函数
while (1)
{
TimerLoadSet(TIMER1_BASE, TIMER_A, 3000);TimerEnable(TIMER1_BASE, TIMER_A); //这里再使能一下
}
}
Li Linqing:
回复 xyz549040622:
照着例程写的,但还是进不了中断
Michael Sun:
回复 Li Linqing:
楼主请把完整的工程传上来吧,包括启动文件,一起调一下。
tong Yang:
回复 Michael Sun:
这个也进不去中断,我已经不知道咋弄了
TI中文支持网
