基于英飞凌TC377写一个定时器中断的代码
时间: 2023-11-27 16:50:19 浏览: 158
定时中断代码
以下是基于英飞凌TC377芯片写的定时器中断的代码:
```
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"
void Timer0IntHandler(void)
{
// 清除定时器0中断标志
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
// 在此处添加需要执行的中断服务程序代码
}
int main(void)
{
// 设置系统时钟为80MHz
SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
// 使能GPIO端口E
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOE));
// 配置GPIO PE0为输出口
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0);
// 使能定时器0模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_TIMER0));
// 配置定时器0的工作模式和周期
TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / 10);
// 注册定时器0中断服务程序
TimerIntRegister(TIMER0_BASE, TIMER_A, Timer0IntHandler);
// 使能定时器0中断
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
// 启动定时器0
TimerEnable(TIMER0_BASE, TIMER_A);
while(1)
{
// 在此处添加需要执行的主程序代码
}
}
```
在该代码中,我们使用了定时器0(TIMER0)来生成定时中断。首先我们启用了系统时钟,并使能了GPIO模块和定时器0模块。然后配置了GPIO PE0为输出口,以便在中断服务程序中使用。接着,我们配置了定时器0的工作模式和周期,并注册了定时器0中断服务程序。最后,我们启用定时器0中断,并启动了定时器0。在main函数中,我们可以添加需要执行的主程序代码。在Timer0IntHandler函数中,我们可以添加需要执行的中断服务程序代码。
阅读全文