请问《列说STM32》的扩展实例的第14个实验:ALIENTEK MINISTM32 扩展实验14 UCOSII多任务运行LED+KEY+LCD+触摸画笔,还有第十五个扩展实验都没有以下两个函数
//系统时钟中断服务函数
void SysTick_Handler(void)
{
OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR 关中断的宏 */
OSIntNesting++; //中断嵌套层数加1
OS_EXIT_CRITICAL(); //开中断的宏
OSTimeTick(); /* Call uC/OS-II's OSTimeTick()调用时钟节拍服务函数, 在这个函数中将任务结构体的成员OSTCBDly每个时钟节拍减1 */
OSIntExit(); /* Tell uC/OS-II that we are leaving the ISR 退出中断服务函数: 通知UC/OSII中断函数已完成*/
}
//系统时钟配置,设计1ms产生一次中断 uC/OS需要用户提供周期性信号源,用于实现时间延时和确认超时
void SysTick_Configuration(void)
{ //SysTick是STM32的系统滴答寄存器
SysTick->CTRL&=~(1<<2);//SYSTICK使用外部时钟源
SysTick->CTRL|=1<<1; //开启SYSTICK中断
SysTick->LOAD=9000; //产生1ms中断;系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的
//最大值),产生1ms时间基准。
//bit2清空,选择外部时钟 HCLK/8
SysTick->CTRL|=1<<0; //开启SYSTICK
}
没有这两个函数,那么请问系统是怎样调用时钟节拍服务函数 OSTimeTick()的呢?就是说一个任务在运行OSTimeDlyHMSM(0,0,0,400);函数以后,需要在时钟节拍服务函数里面将这个任务恢复成就绪态。可是在14、15实验的程序里面没有上面的两个系统配置函数和系统时钟中断服务函数。那么OSTimeTick()是在哪里调用的呢? |