📄 ucos_edukit3.c
字号:
/*********************************************************************************************
* File: main.c
* Author: embest
* Desc:
* History:
* R.X.Huang, Programming modify, Nov. 10, 2005
*********************************************************************************************/
/*------------------------------------------------------------------------------------------*/
/* include files */
/*------------------------------------------------------------------------------------------*/
#include "2410lib.h"
#include "includes.h" /* uC/OS interface */
#include "sems.h" /* user's Semaphore */
#define irq_handler IsrIRQ // 2410init.s
void InitTimers(void);
void InitInterrupts(void);
void tick_timer_int(void);
void UserIRQ_Eint0(void);
void ARMTargetInit(void);
void ARMTargetStart(void);
void tick_timer_int(void)
{
ClearPending(BIT_WDT); // Clear pending bit -- Watchdog timer
OSTimeTick();
}
void InitTimers(void)
{
rWTDAT = rWTCNT = PCLK/16/OS_TICKS_PER_SEC; // set up the WDT
rWTCON = (0<<8)|(1<<5)|(0<<3)|(1<<2)|(0<<0);// Pre=0, Enable WDT, 16, int, No Reset
}
void InitInterrupts(void)
{
extern void UserIRQ_Handle(); // ucos_cpu_a.s
pISR_IRQ = (unsigned) UserIRQ_Handle; // handler setting
pISR_WDT = (unsigned)tick_timer_int;
/* --- */
pISR_EINT0 = (unsigned)UserIRQ_Eint0;
}
/* Initialize an ARM Target board */
void ARMTargetInit(void)
{
sys_init(); /* Initial 44B0X's Interrupt,Port and UART */
/* ---------------- print To UART0 ---------------- */
uart_printf("\n*==================================*\n");
uart_printf("*= 深圳市英蓓特信息技术有限公司 =*\n");
uart_printf("*==================================*\n");
uart_printf("*========== 产品研发中心 ==========*\n");
uart_printf("*======= 86-755-25631365 ========*\n");
uart_printf("*===== support@embedinfo.com ======*\n");
uart_printf("*=== OS Version:%d ===*\n\r",OSVersion());
uart_printf(" uCOS-II Running... \n") ;
InitInterrupts();
InitTimers();
} /* targetInit */
/* start the ARM target running */
void ARMTargetStart(void)
{
ClearPending(BIT_WDT); // Clear pending bit -- Watchdog timer
BIT_CLR(rINTMSK, BIT_WDT); // Enable WatchDog interrupts
/* --- */
rGPFCON = (rGPFCON & 0xfffc) | (1<<1); // PF0 = EINT0
rEINTPEND = 0xffffff;
rEXTINT0 = (rEXTINT0 & 0xfffffffc) | 0x2;// EINT0/2=falling edge triggered
BIT_CLR(rINTMSK, BIT_EINT0); // Enable Extern interrupt 0
}
void UserIRQ_Eint0(void)
{
OSSemPend(UART_sem, 0, 0);
uart_printf(" SB1202 had pressed...\n");
OSSemPost(UART_sem);
ClearPending(BIT_EINT0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -