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

📄 sample_main.c

📁 关于日本最著名的实时系统T-KERNEL的平台下的AD键盘实现源码
💻 C
字号:
/*""FILE COMMENT""*************************************************************
*       System Name : RENESAS T-Engine, micro T-Engine series
*       File Name   : sample_main.c
*       Version     : 1.00.00
*       Contents    : Key/Touch Panel sample
*       Model       : T-Engine/SH7727
*       CPU         : SH7727
*       Compiler    : GNU
*       OS          : T-Kernel
*       note        : The Software is being delivered to you "AS IS" 
*                   : and Renesas,whether explicitly or implicitly makes  
*                   : no warranty as to its Use or performance. 
*                   : RENESAS AND ITS SUPPLIER DO NOT AND CANNOT WARRANT 
*                   : THE PERFORMANCE OR RESULTS YOU MAY OBTAIN  BY USING 
*                   : THE SOFTWARE. AS TO ANY MATTER INCLUDING WITHOUT 
*                   : LIMITATION NONINFRINGEMENT OF THIRD PARTY RIGHTS,
*                   : MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY, 
*                   : OR FITNESS FOR ANY PARTICULAR PURPOSE.
*
*       Copyright (c) 2006 RENESAS TECHNOLOGY CORP. All Rights Reserved.
*       AND RENESAS SOLUTIONS CORP. All Rights Reserved.
*       history   : 2006.07.28 ver1.00.00
*""FILE COMMENT END""*********************************************************/

#include <machine.h>
#include <tk/tkernel.h>
#include <tk/sysdef.h>
#include "sample_main.h"
#include "key.h"
#include "tp.h"
#include <sys/svc/h8io_svc.h>

#define	INT_11	0x720

T_DINT	dint;

EXPORT void writeREG(UW idx, UW len, UW data) {

    ER	err;

	err = H8Write(idx, len, data);

    if(err < E_OK) H8Reset();
    return;
}

EXPORT UW readREG(UW idx, UW len)
{
    INT	err;

	err = H8Read(idx, len);

    if(err < E_OK) H8Reset();
    return err;
}

void sample_main(void)
{
	/* Key/TouchePanel initialize */
	ks_init();
	tp_init();

	/* Define Interrupt Handler */
	dint.intatr	= TA_HLNG;
	dint.inthdr	= h8_inthdr;

	tk_def_int(INT_11,&dint);
	out_h(ICR2,in_h(ICR2)&~0x0800);
	out_h(PINTER,in_h(PINTER)|0x0800);
	out_h(IPRD,in_h(IPRD)|0x0c00);

}

/* H8 interrupt handler body */
void	h8_inthdr(UINT	dintno)
{
	INT	reg_rtkisr;

	reg_rtkisr = readREG(H8_RTKISR, 1);
	if(reg_rtkisr & 0x04){
		ks_inthdr(dintno);
		reg_rtkisr &= ~0x04;
	}
	if(reg_rtkisr & 0x02){
		tp_inthdr(dintno);
		reg_rtkisr &= ~0x02;
	}
	writeREG(H8_RTKISR, 1, (UW)reg_rtkisr);
}

⌨️ 快捷键说明

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