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

📄 sysstart.c

📁 ucos移植到44b0
💻 C
字号:
#ifndef _SYSSTART_C
#define _SYSSTART_C

#include "syscommon.h"


_UC g_Time2Count = 0;

void Timer2_Start(_UC prescaler, _UC divider, _US count)
{
    if (divider >= TIMER_DIVIDER_BUTT)
    {
        Vos_Printf("The divider(%d) out of the scrope!",divider);
        return ;
    }

    //rINTCON = 5; 
    //rINTMOD = 0;
    prescaler = 250;
    count     = 1;//定时器周期100 us
    
    rINTMSK &=~(BIT_TIMER2);//定时器2中断使能
   // pISR_TIMER2= (_UL)Timer2_Int;   //(unsigned)
    pISR_TIMER2= (_UL)OSTickISR;
    
    rTCON  	&= 0xffff0fff;			// clear manual update bit, stop Timer2
    rTCFG0  = (rTCFG0 & 0xffff00ff)|(prescaler<<8);
	//rTCFG0 	&= (0xffff00ff + prescaler<<7);			// set Timer 2&3 prescaler prescaler
	rTCFG1 	&= 0xfffff0ff;			// set Timer 2 MUX 1/16
	rTCFG1  |= 0x00000300;	
	rTCNTB2	 = count;			//(MCLK/16)=2.5M; prescaler=1, s=0.4 us;prescaler = 250, s=100 us;prescaler = 25, s=10 us;
	//rTCMPB2  = (rTCNTB2*(100-HiRatio))/100;	//if set inverter on,  when TCNT2<=TCMP2, TOUT is low,  TCNT2>TCMP2, TOUT is high
	rTCON	|= 0x00002000;			// 手动更新
	rTCON	&= 0xffff0fff;			// clear manal update bit
	rTCON   |= 0x0000d000;			// auto reload, inverter on, start Timer 2    
	Vos_Printf("The Timer2 has been start\r\n");
}

void Timer2_Stop(void)
{
    rTCON &= ~0x1000;
}

void __irq Timer2_Int(void)
{    
    rI_ISPC = BIT_TIMER2;    
    g_Time2Count++;
    Led_Display(g_Time2Count%2);
    return;
}

void TEMP_Display(_UC LedStatus)
{
	//PC1,PC2,PC3 High available
    rPDATC = (rPDATC & 0xFFBF )|((LedStatus & 0x1)<<6);
}

void Led_Display(_UC LedStatus)
{
	//PC1,PC2,PC3 High available
    rPDATC = (rPDATC & 0xFFF1 )|((LedStatus & 0x7)<<1);
}
#endif

⌨️ 快捷键说明

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