main.c

来自「在M16上动行的Small RTOS」· C语言 代码 · 共 71 行

C
71
字号


#include "CONFIG/config.h"

#define TCNT0_INIT (0XFF-F_CPU/256/TICK_TIMER_SHARING/OS_TICKS_PER_SEC)

void Timer0Init(void)
{
	TCNT0=TCNT0_INIT;
	TCCR0=_BV(CS02);
	TIMSK=_BV(TOIE0);
}




int main (void)
{	
	cli();
	MCUCR  = 0x00;
	MCUCSR = 0x80;

	Timer0Init();


	OSStart();

	
	while (1);
}

SIGNAL(SIG_OVERFLOW0)
{
	TCNT0=TCNT0_INIT; 
	

	#if TICK_TIMER_SHARING >1 
    static uint8 TickSum = 0;
#endif

#if EN_USER_TICK_TIMER > 0 
    UserTickTimer();                                                                                  
#endif



#if TICK_TIMER_SHARING >1 
    TickSum = (TickSum + 1) % TICK_TIMER_SHARING;
    if (TickSum != 0)
    {
        return;
    }
#endif

#if EN_OS_INT_ENTER > 0 
    OS_INT_ENTER();                                     // 中断开始处理                                    
#endif
    

#if EN_TIMER_SHARING > 0
    OSTimeTick();                                       // 调用系统时钟处理函数                            
#else
    OSIntSendSignal(TIME_ISR_TASK_ID);                  // 唤醒ID为TIME_ISR_TASK_ID的任务                 
#endif
    
    OSIntExit();                     
	
}


⌨️ 快捷键说明

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