其他分享
首页 > 其他分享> > UCOS之启动流程

UCOS之启动流程

作者:互联网

OS_IdleTaskInit(p_err); /* 初始化空闲任务 */

空闲任务栈默认为 128*4=512 字节

OS_TickTaskInit(p_err); /* 初始化时钟节拍任务 */

 

DWT(Data Watchpoint and Trace),是用于系统调试及跟踪,

它有一个 32 位的寄存器叫 CYCCNT,它是一个向上的计数器,记录的是 内核时钟运行的个数,内核时钟跳动一次,该计数器就加 1,当 CYCCNT 溢出之后,会清零重新 开始向上计数。

内核时钟是 72M,那精度就是 1/72M = 14ns,而程序的运行时间都是微秒级别的,所以 14ns的精度是远远够的。

最长能记录的时间为: 2^32 /72000000=60s

 

时钟节拍的频率表示操作系统每 1 秒钟产生多少个 tick, tick即是操作系统节拍的时钟周期,

时钟节拍就是系统以固定的频率产生中断(时基中断),并在中断中处理与时间相关的事件,推动所有任务向前运行。

OS_CPU_SysTickInit() 用于初始化时钟节拍中断,初始化中断的优先级,SysTick中断的启用等等

在系统任务的第一个任务开始的时候进行调用,如果在此之前进行调用中断,可能会造成系统奔溃,因为系统还没有初始化好就进入中断,可能在进入和退出中断的时候会调用系统未初始化好的一些模块

1000HZ 1ms,与时钟频率相关,w/1000hz=cnt;

 

在系统创建任务之前,就必须将系统必要的东西进行初始化

采用一块连续的大数组作为系统管理的内存CPU_INT08U Mem_Heap[LIB_MEM_CFG_HEAP_SIZE]

 

创建任务

 

因为创建仅仅是把任务添加到系统中,OSStart()调度任务开始运行操作系统

 

删除任务

 

 

标签:初始化,UCOS,启动,中断,流程,系统,任务,OS,时钟
来源: https://www.cnblogs.com/slowby/p/16081655.html