⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 JAPAN "RTOS technology that learns with TOPPERS"
💻
字号:
#ifndef _HW_TIMER_H_
#define _HW_TIMER_H_

/*
 *  CPU埶懚僞僀儅丒儌僕儏乕儖乮GBA梡乯
 *  TM0傪巊梡
 */
#include "witz_gba.h"
#include "sys_defs.h"
#include "cpu_config.h"
#include "sys_config.h"

/*
 *  僞僀儅妱傝崬傒偺妱傝崬傒斣崋
 */
#define INHNO_TIMER IRQ_NUMBER_TM3

/*
 *  僞僀儅抣偺撪晹昞尰偺宆
 */
typedef UH  CLOCK;

/*
 *  僞僀儅
 */
#define TO_CLOCK(nume, deno)  (TIMER_CLOCK * (nume) / (deno))

/*
 *  愝掕偱偒傞嵟戝偺僞僀儅廃婜乮扨埵偼撪晹昞尰乯
 */
#define MAX_CLOCK   ((CLOCK) 16780)

/*
 *  惈擻昡壙梡僔僗僥儉帪崗傪庢傝弌偡嵺偺張棟帪娫偺尒愊傝抣
 *乮扨埵偼撪晹昞尰乯
 */
#define GET_TOLERANCE   100

/*
 *  僞僀儅偺婲摦張棟
 *
 *  僞僀儅傪弶婜壔偟丆廃婜揑側僞僀儅妱傝崬傒梫媮傪敪惗偝偣傞
 */
Inline void
hw_timer_initialize()
{
    *TM3CNT = 0;
    /*16.78MHz偱摦嶌偡傞偨傔16780僇僂儞僩偱1ms*/
    *TM3D = 0xBE74;
    *INTIE |= IRQ_BIT_TM3;
    *TM3CNT = (TM_PRE_1 | TM_IRQ_ON | TM_START );
}

/*
 *  僞僀儅妱傝崬傒梫媮偺僋儕傾
 */
Inline void
hw_timer_int_clear()
{
}

/*
 *  僞僀儅偺掆巭張棟
 */
Inline void
hw_timer_terminate()
{
    *TM3CNT &= ~TM_START;   /* 僞僀儅傪掆巭 */
    *INTIE  &= ~INHNO_TIMER;/* 妱傝崬傒晄嫋壜*/    
    *INTIF  |= IRQ_BIT_TM3; /* 儁儞僨傿儞僌丒價僢僩傪僋儕傾 */
}

/*
 *  僞僀儅偺尰嵼抣偺撉傒偩偟
 *
 *  妱傝崬傒嬛巭嬫娫拞偱屇傃弌偡偙偲丏
 */
Inline CLOCK
hw_timer_get_current(void)
{
    return(TO_CLOCK(TIC_NUME, TIC_DENO) - *TM3D);
}

Inline BOOL
hw_timer_fetch_interrupt(void)
{
    return(*INTIF & IRQ_BIT_TM3);
}

#endif /* _HW_TIMER_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -