历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2020年10月15日 | ucos-ii示例2:信号量测试

2020-10-15 来源:eefocus

环境:


主机:WIN8


开发环境:MDK4.72


ucgui版本:3.90


ucos版本:ucos-ii


mcu: stm32f103VE


说明:


本示例新建一个信号量,task1接收信号量,task2发送信号量。task1时间片为1s/次,task2时间片3s/次。可以看到,因为信号量的关系,task1输出也是3s/次。


注意:


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);

Semaphore = OSSemCreate(1);

//新建任务

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)

{

//请求信号量,超时时间5s

OSSemPend(Semaphore,5000,&err);

//显示

sprintf(str,"task1 time:%ds",OSTimeGet());

GUI_DispStringHCenterAt(str, 120, 5);

WM_Exec();

OSTimeDlyHMSM(0,0,1,0);

}

}

 

static void task2(void *pdata)

{

char str[30] = {0};

 

while(1)

{

//发送信号量

OSSemPost(Semaphore);

//显示

sprintf(str,"task2 time:%ds",OSTimeGet());

GUI_DispStringHCenterAt(str, 120, 20);

WM_Exec();

OSTimeDlyHMSM(0,0,3,0);

}

}


推荐阅读

史海拾趣

APM Hexseal公司的发展小趣事

APM Hexseal的产品很快在军事领域获得了广泛应用。公司的密封靴子通过了严格的军事检查和独立的QPL等效项,证明了其卓越的性能和可靠性。此外,APM Hexseal还协助开发了MIL-B-5423规范(现为MIL-DTL-5423),为军方的新设备保护要求设定了初始标准。这一合作不仅提升了APM Hexseal在军事领域的影响力,也为其在电子行业中的发展打开了新的大门。

Discrete Semiconductor Industries公司的发展小趣事

“全球晶联”是Discrete Semiconductor Industries公司中一家注重国际化合作的代表。该公司积极与国际知名企业开展技术合作和市场拓展,通过引进先进的技术和管理经验,不断提升自身的竞争力。同时,全球晶联还积极开拓国际市场,参加各种国际展览和交流活动,加强与国际客户的沟通和合作。这种国际化合作的发展模式使得全球晶联在国际市场上取得了显著的成绩,成为了全球半导体行业的重要参与者之一。

AnalogicTech公司的发展小趣事

为了进一步扩大市场份额,AnalogicTech积极寻求与全球范围内的合作伙伴建立战略合作关系。公司通过参加国际电子展会、建立海外销售网络等方式,成功将产品推向全球市场。同时,AnalogicTech还加大了对亚洲市场的投入,在香港等地设立了分支机构,进一步提升了公司在全球市场的竞争力。

振华新云(CEC)公司的发展小趣事

背景:2004年,为了适应国家经济发展和产业布局调整的需要,振华新云面临从凯里白午山区调迁至贵阳市新添高新技术开发区的挑战。

内容:在调迁过程中,公司克服了种种困难,如设备搬迁、员工安置、生产线重建等。通过精心组织和周密安排,确保了调迁工作的顺利进行。

成果:调迁完成后,振华新云在贵阳市新添高新技术开发区迎来了新的发展机遇,为公司后续的快速发展提供了有力保障。

Hi-G Relays公司的发展小趣事

背景:随着电子行业的快速发展,振华新云不断加大技术创新和产品研发力度。

内容:公司积极引进先进技术和设备,加强与国际先进企业的合作与交流。同时,注重培养高素质的技术人才队伍,为技术创新和产品研发提供有力支持。

成果:通过持续不断的技术创新和产品研发,振华新云在电子元器件领域取得了多项重要成果,如开发出具有国际先进水平的钽电解电容器等产品,进一步巩固了公司在行业中的领先地位。

Fischer Connectors公司的发展小趣事

背景:为了进一步扩大市场份额和提高品牌影响力,振华新云积极开展市场拓展和国际合作。

内容:公司积极参加国内外电子展会和论坛等活动,加强与国内外客户的沟通和交流。同时,积极寻求与国际先进企业的合作机会,共同开展技术研发和市场推广等活动。

成果:通过市场拓展和国际合作,振华新云的产品逐渐走向世界舞台,赢得了广大客户的信赖和好评。同时,公司也积累了宝贵的国际化经验和资源,为未来的国际化发展奠定了坚实基础。

问答坊 | AI 解惑

毕业设计——220kv电网潮流计算

任务书 (一):已知 (1)系统最大运行方式为四台发电机满发和系统投入运行;系统最小运行方式为停两台发电机(F1,F3),各负荷减半.   (2)系统各负荷及线路参数如图所示,各变压器及发电机型号分别为: F1~F4:SF-100-40/8540Pe=100MWUe=13. ...…

查看全部问答>

proteus第三方元件库

proteus第三方元件库怎么装,谁帮帮我啊?:\'(…

查看全部问答>

网上看的串口自发自收的代码有点疑问,感觉是小问题,帮看下

(顶层模块): module my_uart_top(clk,rst_n,rs232_rx,rs232_tx); input clk; // 50MHz主时钟 input rst_n; //低电平复位信号 input rs232_rx; // RS232接收数据信号 output rs232_tx; // RS232发送数据信号 wire bps_start; / ...…

查看全部问答>

车用影音之电源管理解决方案

大联大控股旗下凯悌集团推出车用影音之最佳电源管理解决方案:  目前车用影音系统已不单纯是CD或卡式录音带,更演进至DVD/MP3/SD card/Car TV/GPS等多合一车用影音系统,坊间改装更是大行其道。针对车用影音系统,AME提供适合之LDO与高效率DC-DC ...…

查看全部问答>

SMT贴片加工--助焊剂的选择

  1、结合产品选择助焊剂。  自身产品的档次及产品本身的特点,是选择助焊剂时首先考虑的条件,高档次的产品如电脑主板、板卡等电脑周边产品及其他主机板或高精度产品,一般选择高档次免清洗助焊剂,也有少数客户用清洗型助焊剂焊后再进行清 ...…

查看全部问答>

贡献MMA7445程序

本帖最后由 paulhyde 于 2014-9-15 03:58 编辑 用S52单片机驱动,模块是龙丘的,但那个公司提供的程序相当有问题,如果是用52单片机的同学根本不会用,搞得头都大了,我经过两天整理,现在终于可以用了。可以显示X与Y轴的重力加速度与角度,现在我 ...…

查看全部问答>

ATX电源概述和原理分析

 ATX电源是计算机的工作电源,作用是把交流220V的电源转换为计算机内部使用的直流5V,12V,24V的电源。   ATX电源特点   与AT电源相比,ATX电源增加了“+3.3V、+5VSB、PS-ON”三个输出.其中“+3.3V”输出主要是供CPU用,而“+5VSB”、“PS ...…

查看全部问答>

TI M4 DAY资料

分享一下!没有电子版的PPT,无法上传,有点遗憾。…

查看全部问答>

Qt开发

闲来无事用了把qt,听说现在nokia卖了qt呀,传qt5会支持android和wp8 看看我的界面吧,有搞qt的嘛,交流交流,我纯粹学习,过了这阵子就好了 …

查看全部问答>

把旅行变成修行——终点也是起点

此前活动贴:十五集连续剧【当“骑行”遇到“TI产品”】正式放映                      https://bbs.eeworld.com.cn/thread-349230-1-1.html 国庆前后15天的台湾之旅非常 ...…

查看全部问答>