历史上的今天
今天是:2024年10月12日(星期六)
2020年10月12日 | ucos-ii示例1:新建任务
2020-10-12 来源:eefocus
环境:
主机:WIN8
开发环境:MDK4.72
ucgui版本:3.90
ucos版本:ucos-ii
mcu: stm32f103VE
说明:
本示例新建两个任务,并运行。
注意:
1.不同任务的任务优先级必须不一样,否则只运行首先定义的任务
2.从系统时钟设置必须在内核启动后设置,否则会导致OSIntNesting一直为1,从而OS_TaskStat函数因为OSTimeDly函数一直返回0陷入死循环
//系统时钟设置,1ms嘀嗒一次
if (SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC))
{
while (1);
}
效果图:

源码:
#define TASK_STK_SIZE 512
/*********************************************************************
* 静态函数
**********************************************************************/
static void task_start(void *pdata);
static void task1(void *pdata);
static void task2(void *pdata);
/*********************************************************************
* 静态变量
**********************************************************************/
/*********************************************************************
* 任务堆栈空间
**********************************************************************/
static OS_STK Task_Start_Stk[TASK_STK_SIZE];
static OS_STK Task1_Stk[TASK_STK_SIZE];
static OS_STK Task2_Stk[TASK_STK_SIZE];
/*********************************************************************
* 信号量
**********************************************************************/
OS_EVENT *Semaphore;
/*********************************************************************
* 函数
**********************************************************************/
int main(void)
{
//初始化内核
OSInit();
//创建任务
OSTaskCreate(task_start,(void *)0,Task_Start_Stk + TASK_STK_SIZE - 1,0);
//启动任务
OSStart();
}
/*********************************************************************
* 任务函数
**********************************************************************/
static void task_start(void *pdata)
{
//载入世界
world_load();
//设置背景色
GUI_SetBkColor(0xb07c17);
GUI_Clear();
GUI_SetColor(GUI_BLACK);
//新建任务
OSTaskCreate(task1,(void *)0,Task1_Stk + TASK_STK_SIZE - 1,1);
OSTaskCreate(task2,(void *)0,Task2_Stk + TASK_STK_SIZE - 1,2);
while(1)
{
OSTimeDlyHMSM(0,0,3,0);
}
}
static void task1(void *pdata)
{
char str[30] = {0};
uint8_t err = 0;
while(1)
{
//显示
sprintf(str,"task1 time:%ds",OSTimeGet() * 10);
GUI_DispStringHCenterAt(str, 120, 5);
WM_Exec();
OSTimeDlyHMSM(0,0,1,0);
}
}
static void task2(void *pdata)
{
char str[30] = {0};
while(1)
{
//显示
sprintf(str,"task2 time:%ds",OSTimeGet() * 10);
GUI_DispStringHCenterAt(str, 120, 20);
WM_Exec();
OSTimeDlyHMSM(0,0,3,0);
}
}
史海拾趣
|
与传统的开关电源相比,特种集成开关电源具有电路新颖、功能奇特、性能先进、应用领域较为广泛等特点。详细介绍了两种新型特种单片开关电源模块的电路设计,一种是2.5W恒压/恒流式充电器模块,另一种是带以太网接口的15WDC/DC电源变换器模块。 关 ...… 查看全部问答> |
|
关键字:网络摄像机 网络摄像机是传统摄像机与网络视频技术相结合的新一代产品,除了具备一般传统摄像机所有的图像捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过网络送至终端用户。本文 ...… 查看全部问答> |
|
MFC requires WINVER to be #defined to 0x0400 or greater MFC requires WINVER to be #defined to 0x0400 or greater… 查看全部问答> |
|
计算机组成原理课程设计、电子钟、电子琴、智能交通灯电路图!用8255!~和汇编程序! 各位高手:今年计算机组成原理课程设计,电子钟,电子琴,智能交通灯! 这些电路图!我们是用实验箱做实验的!主要电路图不会画 和借口不知道从哪接! 希望大家能看看有没有会的,和做过这样的课程设计!还有相关的汇编语言程序! 希 ...… 查看全部问答> |
|
/******************************************************* 说明: 次程序成功实现SPI简单通信配置,能实现SPI1发送 数据,SPI2接收数据简单通信功能,仅供测试使用。 *********************************** ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 2011.8.25全国大学生电子设计竞赛组委会专家组在网上公布本次全国大学生电子设计竞赛需要的基本仪器和主要元器件清单,以便参赛学校做好准备。通过对所公布的基本仪器和主要元器件清单进行分析,可以 ...… 查看全部问答> |
|
经过奋斗,LM3S811的中断程序调通了! ** Created By: hu_hejiaun lai_qingmin** Created date: & ...… 查看全部问答> |




