#include <stdio.h>
#include "app.h"
#include "bsp.h"
#include "slpman_ec616.h"
#include "bsp_custom.h"
#include "pad_ec616.h"
#include "gpio_ec616.h"
#include "timer_ec616.h"
#define timer_index 0 //定时器0
#define timer_clock_id GPR_TIMER0FuncClk //定时器时钟
#define timer_clock_select GPR_TIMER0ClkSel_26M //选择时钟
#define timer_irqn PXIC_Timer0_IRQn //定时器中断
volatile uint32_t timer_cnt=0;
//定时器中断
void timer_interrupt()
{
if (TIMER_GetInterruptFlags(timer_index) & TIMER_Match0InterruptFlag)//中断
{
timer_cnt ++;
TIMER_ClearInterruptFlags(timer_index, TIMER_Match0InterruptFlag);//清除中断
}
}
void timer0_init(void)
{
TIMER_DriverInit();//初始化
CLOCK_SetClockSrc(timer_clock_id, timer_clock_select);//设置时钟
CLOCK_SetClockDiv(timer_clock_id, 1);//设置时钟分频
//配置定时器
timer_config_t timerConfig;
TIMER_GetDefaultConfig(&timerConfig);
timerConfig.reloadOption = TIMER_ReloadOnMatch0;//设置第一个中断时间
timerConfig.match0 = 26000;//计数到26000(1ms),产生中断
TIMER_Init(timer_index, &timerConfig);
TIMER_InterruptConfig(timer_index, TIMER_Match0Select, TIMER_InterruptLevel);//第一个时间产生中断
TIMER_InterruptConfig(timer_index, TIMER_Match1Select, TIMER_InterruptDisabled);
TIMER_InterruptConfig(timer_index, TIMER_Match2Select, TIMER_InterruptDisabled);
//设置中断
XIC_SetVector(timer_irqn, timer_interrupt);//设置中断回调函数
XIC_EnableIRQ(timer_irqn);//使能中断
TIMER_Start(timer_index);//打开定时器
}
void main_entry(void)
{
BSP_CommonInit();//官方底层初始化函数,默认写上就可以
BSP_CustomInit();//串口1作为printf
timer0_init();
while (1)
{
if (timer_cnt>=1000)//1S
{
timer_cnt=0;
printf("11223344\r\n");
}
}
}