📄 timer.c
字号:
/****************************************************************************************/
//
// Filename: timer.c
// Function: Config timer 0 to control LED 5
//
/****************************************************************************************/
#include <stdio.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_gpt.h>
unsigned int TIMMARK = 0;
/* 定时器启动标志 */
unsigned int TimerRunMark = 0;
#define GPIODIR (*(volatile ioport Uint16*)(0x3400))
#define GPIODATA (*(volatile ioport Uint16*)(0x3401))
GPT_Handle MyhGpt;
/****************************************************************************/
/* */
/* 函数定义:void Config_timer() */
/* 功 能:配置定时器 */
/* */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Config_timer(void)
{
GPT_Config MyGptConfig = {
0, //Emulation management register
0, //GPIO interrupt control register
0, //GPIO enable register
0, //GPIO direction register
0, //GPIO data register
0xB9EF, //Timer period register 1
0x05F5, //Timer period register 2
0, //Timer period register 3
0, //Timer period register 4
GPT_GPTCTL1_RMK( //Timer control register 1
GPT_GPTCTL1_TIEN_NOT_GATED,
GPT_GPTCTL1_CLKSRC_VBUS,
GPT_GPTCTL1_ENAMODE_CONTINUOUS,
GPT_GPTCTL1_PWID_INACTIVE_1CYCLE,
GPT_GPTCTL1_CP_CLOCK_MODE,
GPT_GPTCTL1_INVIN_DONT_INVERT_OUTPUT,
GPT_GPTCTL1_INVOUT_DONT_INVERT_OUTPUT
),
GPT_GPTCTL2_RMK( //Timer control register 2
GPT_GPTCTL2_TIEN_NOT_GATED,
GPT_GPTCTL2_CLKSRC_VBUS,
GPT_GPTCTL2_ENAMODE_CONTINUOUS,
GPT_GPTCTL2_PWID_INACTIVE_1CYCLE,
GPT_GPTCTL2_CP_CLOCK_MODE,
GPT_GPTCTL2_INVIN_DONT_INVERT_OUTPUT,
GPT_GPTCTL2_INVOUT_DONT_INVERT_OUTPUT
),
GPT_GPTGCTL1_RMK( //Global timer control register
GPT_GPTGCTL1_PSC34_DEFAULT,
GPT_GPTGCTL1_TIMMODE_DEFAULT,
GPT_GPTGCTL1_TIM34RS_NOT_IN_RESET,
GPT_GPTGCTL1_TIM12RS_NOT_IN_RESET
)
};
/* Write configuration structure values to Timer control regs */
GPT_config(MyhGpt, &MyGptConfig);
GPT_stop(MyhGpt);
}
/****************************************************************************/
/* */
/* 函数定义:void Timer_start() */
/* 功 能:启动定时器 */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Timer_start(void)
{
/* Start Timer */
GPT_start(MyhGpt);
TimerRunMark = 1; // 表明定时器已经启动
}
/****************************************************************************/
/* */
/* 函数定义:void Timer_stop() */
/* 功 能:停止定时器 */
/* */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Timer_stop(void)
{
if(TimerRunMark == 1) // 如果定时器已经启动,则停止
{
GPT_stop(MyhGpt);
}
}
/****************************************************************************/
/* */
/* 函数定义:void Config_led() */
/* 功 能:将指示灯D5所对应的GPIO口配置成输出 */
/* */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Config_led(void)
{
GPIODIR = 0x80; // config the GPIO7 as output pin
}
/****************************************************************************/
/* */
/* 函数定义:void Open_led() */
/* 功 能:打开指示灯D5 */
/* */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Open_led(void)
{
GPIODATA = 0x80; /* 打开指示灯D5 */
}
/****************************************************************************/
/* */
/* 函数定义:void Close_led() */
/* 功 能:关闭指示灯D5 */
/* */
/* 入口参数:无 */
/* 出口参数:无 */
/* */
/****************************************************************************/
extern void Close_led(void)
{
GPIODATA = 0x00; /* 关闭指示灯D5 */
}
/*定时器0的中断程序*/
extern interrupt void Timer0Isr(void)
{
if(TIMMARK == 0)
{
GPIODATA = 0x00; /* 关闭指示灯D5 */
TIMMARK = 1;
}
else
{
GPIODATA = 0x80; /* 打开指示灯D5 */
TIMMARK = 0;
}
}
/**********************************************************************************/
/* No more */
/**********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -