历史上的今天

今天是: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:消息队列测试

推荐阅读

苹果今年再度推出iPhone XS、iPhone XS Max及iPhone XR三款新机,鸿海富士康因囊括了三款机型多数组装订单,于11日公布的9月营收呈现大幅跃升,达5849.2亿元新台币,月增率47%,也创下9月同期营收新高及单月次高纪录。 鸿海富士康9月营收新台币5849.2亿元,月增率47%,累计今年前9月营收为新台币34858.61亿元,年增率17%。 鸿海富士康表示,9月三大产...
电磁流量计的测量通过是一段无阻流检测件的光滑直管,仪表的阻力仅是同一长度管道的沿程阻力,节能效果显著,所测得的体积流量,实际上不受流体密度、粘度、温度、压力和导电率(只要在某阈值以上)变化明显的影响,测量范围度大,要真正发挥电磁流量计的高精度、高稳定性等优异性能,必须要注意根据不同的测量介质选择相应类型的流量计。一、自来水大流量...
负责提供安全数字化体验的智能边缘平台阿卡迈技术公司(Akamai Technologies, Inc.,以下简称:Akamai)(NASDAQ:AKAM)近日宣布,Parimal Pandya除担任亚太及日本地区(APJ)媒体和运营商销售副总裁外,还刚被任命为亚太及日本地区总经理。Pandya已于2020年10月1日接替离任的Graeme Beardsell担任总经理职务。Pandya在上任亚太及日本地区总经理一职...
日前,据外媒报道,SK创新旗下的电池业务部门SK On考虑研发磷酸铁锂电池。此前该公司主要制造三元、四元锂电池等产品。SK On的CEO透露,他们考虑将磷酸铁锂电池用于低成本汽车等特定用途。从外媒的报道来看,SK On考虑研发磷酸铁锂电池,首先是需求,SK On的CEO透露汽车厂商对磷酸铁锂电池技术有兴趣。尽管磷酸铁锂电池容量密度较低,但是在成本和热稳...

史海拾趣

问答坊 | AI 解惑

哪个好心人帮我改下程序不对(程序是转载)~~先谢了~!

简单计算器  加减乘除  采用4×4键盘,分别表示0~9、+、-、×、/ 、=和清零键CL http://b13.photo.store.qq.com/ht ... 37a452545bcbb7a0b86 #include<REG51.H>    #include<ABSACC.H>    ...…

查看全部问答∨

电路设计漫谈(转)

做了若干年的电子系统设计。所涉领域有数字通信,数据交换机,模拟电路,芯片设计等等。有些感慨逐渐写出来灌灌水,博大家一笑。 ×××××××× 第一回:境界层数 传统的武功都分若干层,好像大多是7-9层吧,呵呵。这电路设计的功力也一样, ...…

查看全部问答∨

Tornado在调试过程中断点设置异常

本人在用Tornado调试程序时,不能在指定行设置断点,按F9断点出现在其他行,同时F10单步调试,调试器中不是按顺序运行,而是乱来,一会儿上,一会儿下,变量窗口中红色显示的变量也不是当前执行代码行改变的变量。 说明:编译下载后没有编辑程序…

查看全部问答∨

mcv14单片机RB.RC口做普通IO口怎么设置

我RB RC口只想做普通IO口用要配置哪个寄存器.我要用到RB2,RB4,RC0,RC1,RC2,RC3,RC4,RC5 怎样配置送高低电平时才正确. C2ON = 0;   OPTION = 0x02;//8分频给TIMER0,内部时钟 RBPU = 0   RBWUF = 1;//在引脚电平变化时从 ...…

查看全部问答∨

51汇编 ret返回迷惑

qing0: mov r0,#0FFH QING_GOON: MOV @R0,#0 DJNZ R0,QING_GOON    RET 调用这个函数怎么返回到了0000h呢?? …

查看全部问答∨

大家一起做元器件MARK纪录如何?

这个不多说,做过设计的朋友都知道,也很经常遇到,选料问题,辨别料等等…

查看全部问答∨

使用IAREWARM下载BIN文件

IAR EWARM能够直接将程序下载到Flash中,但在此过程中需要使用根据源代码编译出来的sim文件。如果只有bin文件,则不能直接使用EWARM下载。然而,EWARM提供了一个可将任何二进制文件(如bin,bmp,wav等)直接链接到project中的功能;利用 ...…

查看全部问答∨

lm3s 以太网数据自动丢失问题

最近接到lm3s9b81以太网通讯工作要求; 结果使用自带的enet_lwip(demo)程序时,在屏蔽数据从寄存器读取的代码后,出现以下情况; 从地址0x40048000那块以太网寄存器地址观察:当收到一帧但没有读取(屏蔽了)macdata寄存器数据值一直变化,而且 ...…

查看全部问答∨

X5325是具体是怎么个工作原理?

在某个原理图中看到用X5325做复位电路,但看到SI SCk SO都用到单片机的一个引脚,网上找了下他的英文资料,还是没看明白,有没有大侠给详细解释下这个芯片的用法?…

查看全部问答∨

基于瑞萨RL78G14的DDS信号发生器DIY(四)做好的PCB

第四篇 做回来的PCB板 正面 反面 合照 PCB做回来了,准备焊接调试…

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

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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