嵌入式实时操作系统small RTOS51原理及应用 ----笔记 第十四章 LED扫描程序的实现

嵌入式实时操作系统small RTOS51原理及应用 ----笔记 第十四章 LED扫描程序的实现

Page172 :
任务 划分:
在这里插入图片描述

        void Show(void)
{
    uint8 i;
    
                                            /* 初始化显示缓冲区     */    
    ShowCase[0] = ShowTable[0];
    ShowCase[1] = ShowTable[0];
    ShowCase[2] = ShowTable[0];
    ShowCase[3] = ShowTable[0];
    ShowCase[4] = ShowTable[10];
    
    while (1)
    {
        for (i = 0; i < 5; i++)
        {
            P1 = 0xff;                      /* 关闭显示第i位                    */
            KdTxdByte(ShowCase[i]);
            P1 = EbitData[i];               /* 显示第i位                        */ 
            OSWait(K_SIG,0);                /* 等待1/600秒(由定时器中断决定)  */
        }

        OSWait(K_SIG,0);                    /* 等待1/600秒(由定时器中断决定)  */
        OSTimeTick();                       /* 调用系统节拍处理程序             */
    }
}

为啥 需要 调用 : OSTimeTick(); /* 调用系统节拍处理程序 */

在这里插入图片描述

如果设置 EN_TIMER_SHARING 为0 ,那么需要在任务中 调用 OSTimeTick

#define EN_TIMER_SHARING 0 /* 禁止(0)或允许(1)定时器中断调用OSTimeTick() */

#if EN_OS_INT_ENTER >0 
#pragma disable                                        /* 除非最高优先级中断,否则,必须加上这一句                 */
#endif
        void OSTickISR(void) interrupt OS_TIME_ISR

{
	//while(1);
#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();                                        /* 中断结束处理                                             */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值