void task_run(void *arg) { SysTick_init(); mutex_init(); if(__init_GlobalLock()!=0) SysReset(); __GlobalLock(); platpara_init(); printf("\r\nstart runing...\r\n"); printf("platform make at:\033[1;31;40m%s \033[0m\r\n",MKTIME); printf("Sysetm \033[1;32;40m%s\033[0m start at:%s\r\n",SYSTEM_NAME,UTimeFormat(UTimeReadCurrent())); RunAppTask(); while(1) { rtc_update(1); if(UTimeReadCurrent()%300 == 0) printf("\r\nTime:%s\r\n",UTimeFormat(UTimeReadCurrent())); watchdog_feed(); #ifdef BIG_CONCENT shining_led(); #endif SysCheckTaskState(); sleep(50); } }
void pic_isr(struct thread_state* state, unsigned ring, unsigned irq) { (void)state; (void)ring; unsigned pirq = irq - 32; if (!pic_is_spurious(pirq)) { if (pirq == 8) rtc_update(); // try to keep RTC latency as low as possible. pic_eoi(pirq); isr_send_signal(irq); } }
void _rtc_interrupt_handler( void * object, TiEvent * e ) { TiRtc * rtc = (TiRtc *)object; rtc_update( rtc );//更新时间 rtc_active( rtc );//判断是否定时时刻到。 rtc_expired( rtc );//判断是否定时间隔到。 }
int main(void) { BSP_Init(); //板级驱动 OSInit(); //uCOS init PlatInit(); // 模块init rtc_update(0); RunSystemTask(); //task add OSStart(); return 0; }
static irqreturn_t s3c2410_rtc_tickirq(int irq, void *id, struct pt_regs *r) { rtc_update(1, RTC_PF | RTC_IRQF); return IRQ_HANDLED; }
void ktime_update(void) { slock_acquire(&rtc_lock); rtc_update(&k_time); slock_release(&rtc_lock); }