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

📄 hw_timer.h

📁 符合日本著名的ITRON规范的开源操作系统。 TOPPERS/JSP内核就是TOPPERS工程按μITRON4.0研发的第一个 软件
💻 H
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  Copyright (C) 2003-2004 by Naoki Saito *             Nagoya Municipal Industrial Research Institute, JAPAN *  Copyright (C) 2003-2004 by Platform Development Center *                                          RICOH COMPANY,LTD. JAPAN *  *  惧淡螟侯涪荚は·Free Software Foundation によって给山されている  *  GNU General Public License の Version 2 に淡揭されている掘凤か·笆 *  布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ *  アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ *      ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 *      に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· *      この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 *      み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ *    (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 *        涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する *        ことˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚を倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· *  塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ *  ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい *  かなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: hw_timer.h,v 1.4 2005/12/06 02:55:09 honda Exp $ *//* *	タイマドライバ∈OAKS32脱∷ */#ifndef _HW_TIMER_H_#define _HW_TIMER_H_#include <s_services.h>#include <sil.h>#include <oaks32.h>/* *  タイマ充哈みハンドラのベクタ戎规 */#define	INHNO_TIMER	INT_TA0/* *  タイマ〖の充り哈みレベル */#define INT_LEVEL_TIMER	0x05#ifndef _MACRO_ONLY/* *  タイマ猛の柒婶山附の房 */typedef UH	CLOCK;/* *  タイマ猛の柒婶山附とミリ擅帽疤との恃垂 * *  1msのタイマ〖充り哈みを蝗脱するのでそのクロックを年盗するˉ */#define TIMER_CLOCK		(30000u)	/* 30MHz */#define TO_CLOCK(nume, deno)	((CLOCK)(TIMER_CLOCK * (nume) / (deno)))#define	TO_USEC(clock)		((SYSUTIM)(clock) * 1000u / TIMER_CLOCK)/* *  肋年できる呵络のタイマ件袋∈帽疤は柒婶山附∷ */#define	MAX_CLOCK	((CLOCK) 0xffffu)/* *  拉墙删擦脱システム箕癸を艰り叫す狠の借妄箕粗の斧姥り猛∈帽疤は柒婶山附∷ */#define	GET_TOLERANCE	(100u)	/* 借妄觅れの斧姥り猛∈帽疤は柒婶山附∷*/#define	BEFORE_IREQ(clock) \		((clock) >= TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)/* *  タイマの弹瓢借妄 * *  タイマを介袋步し·件袋弄なタイマ充哈み妥滇を券栏させるˉ */Inline voidhw_timer_initialize(void){	VB tabsr;	/*	 * タイマ介袋步	 */	/* タイマカウント匿贿  */	tabsr = sil_reb_mem((VP)TADR_SFR_TABSR);	tabsr &= ~TBIT_TABSR_TA0S;	sil_wrb_mem((VP)TADR_SFR_TABSR, tabsr);	sil_wrb_mem((VP)TADR_SFR_UDF, 0x00);	/* ダウンカウント肋年	*/	sil_wrb_mem((VP)TADR_SFR_TA0MR, 0x00);	/*  カウントソ〖スf1, タイマモ〖ド  */	/*	 *  タイマは 1msで TIMER_CLOCK カウント,	 *  レジスタ肋年猛はマイナス1する.	 */	sil_wrh_mem((VP)TADR_SFR_TA0, TO_CLOCK(TIC_NUME, TIC_DENO)-1);/* タイマ猛の介袋步 */	/* 充り哈みレベルの肋年	*/	sil_wrb_mem((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET), INT_LEVEL_TIMER);				/* カウント倡幌	*/	/* タイマカウント倡幌  */	tabsr = sil_reb_mem((VP)TADR_SFR_TABSR);	tabsr |= TBIT_TABSR_TA0S;	sil_wrb_mem((VP)TADR_SFR_TABSR, tabsr);}/* *  タイマ充哈み妥滇のクリア */Inline voidhw_timer_int_clear(void){	/*	 *  この簇眶はタイマ充り哈みハンドラが	 *  isig_tim を钙び叫す涟に悸乖される.	 *  充哈みが减け烧けられてから	 *  充哈みハンドラに借妄が败った箕爬で	 *  充哈み妥滇ビットはクリアされるため	 *  部もする涩妥がない. 	 */}/* *  タイマの匿贿借妄 * *  タイマの瓢侯を匿贿させるˉ */Inline voidhw_timer_terminate(void){	VB c;	c = sil_reb_mem((VP)TADR_SFR_TABSR);	c &= ~TBIT_TABSR_TA0S;		/* カウント姜位	*/	sil_wrb_mem((VP)TADR_SFR_TABSR, c);}/* *  タイマの附哼猛の粕叫し */Inline CLOCKhw_timer_get_current(void){	return ((CLOCK)(TO_CLOCK(TIC_NUME, TIC_DENO)-1)-sil_reh_mem((VP)TADR_SFR_TA0));}/* *  タイマ充哈み妥滇のチェック */Inline BOOLhw_timer_fetch_interrupt(void){	return ((sil_reb_mem((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET)) & TBIT_TAiIC_IR) != 0);}#endif /* _MACRO_ONLY */#endif /* _HW_TIMER_H_ */

⌨️ 快捷键说明

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