?? 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 + -