📄 target.c
字号:
#include "../inc/44b.h"
#include "../inc/option.h"
#include "includes.h"
#include "target.h"
//Initialze interrupts.
void InitInterrupts(void)
{
// Non-vectored,IRQ enable,FIQ disable
rINTCON=0x5;
// All=IRQ mode
rINTMOD=0x0;
// all interrupts disable.
rINTMSK=0X7FFFFFF;
}//uHALr_InitInterrupts
//Initialize timer that is used OS.
void InitTimers(void)
{
rTCFG0=(MCLK>>1)/1000000-1;//预分频值
rTCFG1=0x00000000; // mux0 = 1/2
//定时器0输入时钟频率=MCLK/(预分频值+1)/除法值mux0
//定时器0输入时钟频率为1MHz
rTCNTB0= 1000000/OS_TICKS_PER_SEC;//定时器0输出时钟频率为OS_TICKS_PER_SEC
rTCMPB0= 0x0;
rTCON=0x2; //update mode for TCNTB0 and TCMPB0.
rTCON=0x9; //timer0 = auto reload, start
}//uHALr_InitTimers
void RequestSystemTimer(void)
{
pISR_TIMER0= (unsigned)Timer0_Exception;
pISR_EINT0 = (unsigned)Exint0_Exception;
}
//Start system timer & enable the interrupt.
void InstallSystemTimer(void)
{
//Non-vectored,IRQ enable,FIQ disable
rINTCON=0x5;
rINTMSK=~( BIT_GLOBAL | BIT_TIMER0 ); //Default value=0x7ffffff
}
void ARMTargetInit(void)
{
InitInterrupts();
InitTimers();
}
void ARMTargetStart(void)
{
RequestSystemTimer();
InstallSystemTimer();
}
void Timer0_Exception(void)
{
rI_ISPC=BIT_TIMER0;//清除定时器0中断挂起位,注意:在进入中断后运行次语句前,必须禁止中断
OSTimeTick();
}
void Exint0_Exception(void)
{
rI_ISPC=BIT_EINT0;
//此后可以打开中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -