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

📄 target.c

📁 ucos2 移植到44b0 上的源代码,支持中断嵌套,调试通过.
💻 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 + -