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

📄 board.c

📁 RT-Thread是发展中的下一代微内核嵌入式实时操作系统
💻 C
字号:
/* * File      : board.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006, RT-Thread Develop Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://openlab.rt-thread.com/license/LICENSE * * Change Logs: * Date           Author       Notes * 2006-09-09     Vai          NDS implementation version */#include <rtthread.h>#include <rthw.h>#include <fifo.h>#include "nds.h"/** * @addtogroup NDS *//*@{*//* * Refer to NDSTech Wiki (http://www.bottledlight.com/ds/index.php/System/Timers) * * To make a timer overflow at a particular frequency,  * you set the latch accordingly.  * A timer with a latched value of 0 counting at 33.4 MHz / 1024 will overflow  * every 65536*1024 clocks, or about once every two seconds.  * To make the same timer overflow with a period of X seconds,  * the calculation looks like:  * * latch = 65536 - X*33400000/1024 * */#define DATA_COUNT	0xfeb8      /* 65535 - (0x02000000)/(1024 * 100) */void rt_timer_handler(int vector){	rt_tick_increase();	return;}/*void rt_keypad_interrupt(int vector){    unsigned short keysPressed = ~(REG_KEYINPUT);        // Based on the key pressed, move the shape.    if(keysPressed & KEY_UP)        rt_kprintf("KEY_UP\n");    if(keysPressed & KEY_DOWN)        rt_kprintf("KEY_DOWN\n");    if(keysPressed & KEY_LEFT)        rt_kprintf("KEY_LEFT\n");    if(keysPressed & KEY_RIGHT)        rt_kprintf("KEY_RIGHT\n");    // Change the color of the shape if the relevant key was pressed.    if(keysPressed & KEY_A)        rt_kprintf("KEY_A\n");    if(keysPressed & KEY_B)        rt_kprintf("KEY_B\n");    if(keysPressed & KEY_SELECT)        rt_kprintf("KEY_SELECT\n");    if(keysPressed & KEY_START)        rt_kprintf("KEY_START\n");    if(keysPressed & KEY_R)        rt_kprintf("KEY_R\n");    if(keysPressed & KEY_L)        rt_kprintf("KEY_L\n");    return;}void rt_keypad_init(void){    REG_KEYCNT = 0x7fff;    rt_hw_interrupt_install(NDS_KEYPAD, rt_keypad_interrupt, RT_NULL);    rt_hw_interrupt_umask(NDS_KEYPAD);}*//*#define BUTTON_X    1 << 0#define BUTTON_Y    1 << 1#define SCREEN_OFF  1 << 7void rt_fifo_interrupt(int vector){    unsigned int fifo_buffer;    unsigned int type;    unsigned int data;        while (!(NDS_REG_IPCFIFOCNT & FIFO_EMPTY))    {        fifo_buffer = NDS_REG_IPCFIFORECV;        type = FIFO_GET_TYPE(fifo_buffer);        data = FIFO_GET_TYPE_DATA(fifo_buffer);        switch (type)        {            case FIFO_FIRMWARE:                rt_kprintf("Recv Firmware message\n");                break;            case FIFO_BUTTONS:                break;            case FIFO_TOUCH:                rt_kprintf("x=%d y=%d\n",                            (data & (0xff << 8)) >> 8, data & 0xff);                break;            case FIFO_TIME:                rt_kprintf("Recv Time message\n");                break;            case FIFO_WIFI:                rt_kprintf("Recv WIFI message\n");                break;            default:                break;        }    }    return;}void rt_fifo_init(void){    NDS_REG_IPCFIFOCNT = FIFO_ENABLE | FIFO_IRQ_ENABLE | FIFO_CLEAR | FIFO_ERROR;        rt_hw_interrupt_install(NDS_FIFO, rt_fifo_interrupt, RT_NULL);    rt_hw_interrupt_umask(NDS_FIFO);    return;}*//** * This function will init Nintendo DS console */void rt_hw_board_init(){	volatile unsigned short	*tcp;	tcp = (volatile unsigned short *) NDS_TIMER0_DATA;	*tcp = DATA_COUNT;	tcp = (volatile unsigned short *) NDS_TIMER0_CR;	*tcp = (NDS_TCR_CLK1024 | NDS_TCR_ENB | NDS_TCR_IRQ);	rt_hw_interrupt_install(NDS_INTTIMER0, rt_timer_handler, RT_NULL);	rt_hw_interrupt_umask(NDS_INTTIMER0);//    rt_fifo_init();//    rt_keypad_init();	return;}/*@}*/

⌨️ 快捷键说明

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