历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | ucos-ii示例7:内存管理测试

发布者:心语如画 来源: eefocus关键字:ucos-ii  内存管理测试  stm32f103VE 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN8

开发环境:MDK4.72

ucgui版本:3.90

ucos版本:ucos-ii

mcu: stm32f103VE


说明:

本示例中task2请求内存分区,然后往分区内写数据,再将数据通过邮箱发送给task1


效果图:

源码:



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

 

/*********************************************************************

* 消息队列数组

**********************************************************************/

 

void *Msg_Group[10];

 

char Msg_Arr[10][30];

uint8_t Index_Msg_Arr = 0;

 

/*********************************************************************

* 内存分区

**********************************************************************/

 

OS_MEM *Buffer_Ptr;

uint8_t Buffer[10][30];

 

/*********************************************************************

* 函数

**********************************************************************/

 

int main(void)

{

//初始化内核

OSInit();

//创建任务

OSTaskCreate(task_start,(void *)0,Task_Start_Stk + TASK_STK_SIZE - 1,10);

//启动任务

OSStart();

}

 

/*********************************************************************

* 任务函数

**********************************************************************/

 

static void task_start(void *pdata)

{

uint8_t err = 0;

//载入世界

world_load();

//设置背景色

GUI_SetBkColor(0xb07c17);

GUI_Clear();

GUI_SetColor(GUI_BLACK);

//新建邮箱

Semaphore = OSMboxCreate((void *)0);

//创建内存分区

Buffer_Ptr = OSMemCreate(Buffer,10,30,&err);

//新建任务

OSTaskCreate(task1,(void *)0,Task1_Stk + TASK_STK_SIZE - 1,11);

OSTaskCreate(task2,(void *)0,Task2_Stk + TASK_STK_SIZE - 1,12);

while(1)

{

OSTimeDlyHMSM(0,0,3,0);

}

}

 

static void task1(void *pdata)

{

char str[30] = {0};

uint8_t err = 0;

uint8_t *mail;

 

while(1)

{

//请求信号量

mail = OSMboxPend(Semaphore,0,&err);

//显示

sprintf(str,"task1 receive:%d,%d,%d",mail[0],mail[1],mail[2]);

GUI_DispStringHCenterAt(str, 120, 40);

//显示

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

uint8_t err = 0;

uint8_t *ptr;

static uint8_t a = 0;

 

while(1)

{

//请求内存分区

ptr = OSMemGet(Buffer_Ptr,&err);

//赋值

ptr[0] = a++;

ptr[1] = a++;

ptr[2] = a++;

//用邮箱发送

OSMboxPost(Semaphore,ptr);

//释放内存分区

OSMemPut(Buffer_Ptr,ptr);

//显示

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

GUI_DispStringHCenterAt(str, 120, 20);

WM_Exec();

OSTimeDlyHMSM(0,0,3,0);

}

}


关键字:ucos-ii  内存管理测试  stm32f103VE 引用地址:ucos-ii示例7:内存管理测试

上一篇:ucos-ii示例1:新建任务
下一篇:ucos-ii示例5:消息队列测试

推荐阅读

WeberAuto上Jone老先生更新了他对Prius Prime 2017版本的拆解《2017 Prius Prime 8.79kWh Battery Deep Dive》,这个电池系统从设计到落地差不多也有近2年了,里面的一些内容还是值得我们再看看的。老爷子拆了一遍,又给我们装了一遍,这个视频看了两遍,还是挺有价值的。 备注:Pack系统,现在在机械设计上有点像是为电池单独造房子的感觉,要做...
据外媒报道,苹果将于今年10月举办新品发布会,正式发布包括16英寸版MacBook Pro、iPad Pro等在内的多款新品。其中,新款iPad Pro在外形上不会有太大的改变,但苹果还是对新机做出了一些优化,比如加入了“浴霸三摄”,这项升级主要是为了加入ToF镜头,并为更好的支持AR技术而做准备。不过,天风国际分析师郭明錤在一份最新的报告中指出,新款iPad Pro...
由于开发人员需要等待新设备的硬件实现可用才能开始开始工作,因此嵌入式应用开发项目通常会出现延迟。工业物联网 (IIoT) 应用开发面临类似的瓶颈,需要等待传感器数据才开始像工业预见性维护系统或设施自动化系统之类基于机器学习方法的应用的开发。本系列文章由两部分组成,将探讨哪些替代方法能提供所需的早期数据流,以加速工业物联网应用开发。第 1...
随着智能驾驶和智能座舱时代到来以及AI技术的兴起,汽车智能化成为了当前全球各个企业的目标和需求导向,自动驾驶和智能座舱在当前和未来的汽车开发和应用场景中备受关注,这对AI芯片需求量大大增加,也对当前AI芯片及芯片厂商提出更高挑战。在自动驾驶和智能座舱领域,目前英伟达、英特尔、德州仪器等不少芯片国际巨头公司已布局良久。在此背景下,国产AI...

史海拾趣

问答坊 | AI 解惑

现金求购IC

深圳市瑞琦电子科技有限公司专业从事台式计算机主板、笔记本电脑、工控机主板等主芯片IC的配套推广与销售服务。。“价格合理,用户至上”是我们一惯的宗旨。多年来,已为国内多家知名企业进行配套服务,并获得一致好评。主营产品包括各类电脑主板芯 ...…

查看全部问答∨

FPGA QQ群

本帖最后由 paulhyde 于 2014-9-15 03:27 编辑 大赛一定有很多使用了FPGA的同学吧,也有许多想学习FPGA的同学吧,我建了一个QQ群,为大家学习交流提供方便,希望大家踊跃加入。 QQ群号: 69611574。  …

查看全部问答∨

windows usb driver

1,usb device包含两个configurations, configuration 1是usb mass storage, configuration 2是一个自定义的function; 2, 默认会被windows识别为usb mass storage; 3, 现在需要切换到configuration2, 我发了set configuration 可以成功,但是似 ...…

查看全部问答∨

非专业 跳槽 望各位指点

我是水电专业毕业的 从小对电子很感兴趣 现在在水电设计院呆了一年半 这两天辞职 想去搞电子或者计算机方面的工作 本人只有计算机三级PC证书 觉得自己在计算机和电子方面很有特长的 vb vc jsp X86汇编 我都会点 平时拆拆电视收音机什么的 系统维护 ...…

查看全部问答∨

请教STM32F103的CAN总线速度和系统时钟之间关系的问题?

偶在调试STM32F103VBT6的CAN总线的时候,外部使用晶体为8MHz,当设置系统时钟=8MHz,APB1=4MHz,BS1=8tq,BS2=7tq,Prescaler=5,得到波特率为50K,两个板子之间CAN收发完全正常。当设置系统时钟使用PLL,设置为72Mhz,APB1=36Mhz,BS1=6tq,BS2=5tq,P ...…

查看全部问答∨

关于ise

请问老师,怎么在ise中查看vhdl的程序包文件??…

查看全部问答∨

ds18b20

多个DS18B20+89C51单片机+蜂鸣器报警同时LED灯亮的设置温度上下限报警程序 谁有源程序加电路图啊?…

查看全部问答∨

LMP90100LMP91000 传感器模拟前端概览

本帖最后由 dontium 于 2015-1-23 12:47 编辑 Chuck向您介绍美国国家半导体的LMP90100/LMP91000可配置传感器模拟前端产品,以及可加快产品上市的精简集成式软硬件开发平台。 片段中介绍的产品为:LMP90100/LMP91000。 LMP90100 – 多通道24位传 ...…

查看全部问答∨

你对变压器知识了解多少?来吧!有关变压器的好资料在这里!

要学电源知识,要做电源产品,变压器是必须要了解的,那你对变压器知识了解多少?来吧!这里有个变压器的好资料 …

查看全部问答∨

G2553的时钟怎么配置啊。。。头要炸了。。。

能不能上张图,或者根据程序,讲解一下。万分感谢!!! DCO。。。B__CLK...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved