微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ucosii在stm32上的移植详解4

ucosii在stm32上的移植详解4

时间:11-19 来源:互联网 点击:

启动SysTick定时器。
RCC_GetClocksFreq()用来获取系统时钟。
SysTick_Config()初始化并使能SysTick定时器。
这里要注意的是OS_TICKS_PER_SEC,它是每秒钟的ticks数,如果为1000,就是1s中1000个ticks,也就是说1ms就会产生一个SysTick中断。系统的时间片为1ms。
在邵老师的书中3.11节已有明确说明,必须在调用OSStart()之后,才能开启时钟节拍器(SysTick)。一般会把它放在第一个任务(启动任务)中。

startup_task()用来创建其他应用任务,创建完其他任务后,就会自己删除自己。

文件中的STARTUP_TASK_STK_SIZE,STARTUP_TASK_PRIO需要在app_cfg.h中定义。代码如下:
/* task priority */
#define STARTUP_TASK_PRIO 4

/* task stack size */
#define STARTUP_TASK_STK_SIZE 80

在stm32f10x_it.c中,还需要添加SysTick中断的处理代码:

void SysTick_Handler(void)
{
OSIntEnter();
OSTimeTick();
OSIntExit();
}

这个代码是仿照OS_CPU_SysTickHandler()中代码的,在邵老师书的3.11节亦有说明。这里就不解释。

至此ucosii在stm32上的移植已全部完成。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top