环境:
主机: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示例1:新建任务
下一篇:ucos-ii示例5:消息队列测试
推荐阅读
史海拾趣
捷嘉电子在成立初期面临着巨大的挑战。那是一个智能电子产品刚刚开始兴起的时代,市场竞争激烈。公司创始人余文跃凭借对电子行业的深刻理解和对技术创新的执着追求,决定投身于智能控制器的研发与生产。在初创阶段,资金紧张、人才短缺、市场推广困难重重。但余文跃凭借着坚韧不拔的毅力,带领团队攻克了一个又一个技术难题,逐渐在市场上站稳了脚跟。
近年来,CINTERION与泰雷兹达成战略合作,共同推出了创新型物联网无线通信模组Cinterion MV32。这款模组结合了泰雷兹在连接管理方面的灵活性和CINTERION在无线通信模组技术上的优势,为制造商提供了快速构建和维护高性能5G设备的解决方案。这一合作不仅加强了CINTERION在物联网领域的市场地位,也为其在未来的发展中注入了新的活力。
以上五个故事均基于CINTERION在电子行业中的发展历程和成就进行描述,旨在客观呈现其在不同领域的发展轨迹和技术实力。
面对日益激烈的市场竞争,ERG始终坚持技术研发和创新。他们与多所知名大学和科研机构建立合作关系,共同研发新型电源技术和照明解决方案。这些合作不仅为ERG带来了先进的技术和研发资源,还使其在行业中保持了技术领先地位。通过与科研机构的紧密合作,ERG不断推出更具创新性和竞争力的产品。
为了进一步扩大市场份额和品牌影响力,长江微电积极寻求与业内知名分销商的合作。基于对世强先进O2O技术分销模式的信赖与认可,长江微电与世强先进(深圳)科技股份有限公司签署了授权代理协议。双方将携手合作,共同为用户提供车规级电感、车规级耦合电感等全线产品。这一合作不仅丰富了世强硬创平台电子元器件产品的品类及信息,也为长江微电的市场拓展提供了有力支持。
长江微电(CJIANG)自创立以来,始终专注于电感产品的材料研发、技术研发、生产工艺和生产设备的研发和改进。面对国外品牌在电感技术领域的领先地位,长江微电并未退缩,而是选择迎难而上。通过多年的努力,其技术团队基于对磁性材料的深入研究和对生产工艺的不断改进,成功突破了VISHAY等国外品牌的技术壁垒,拥有了全系列的一体成型电感产品。这一突破不仅彰显了长江微电的技术实力,也为公司的发展奠定了坚实基础。
随着市场竞争的加剧,D+H Mechatronic AG开始调整其市场布局策略。公司根据市场需求和产品特点,有针对性地开拓新的市场领域。同时,公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些举措使公司在激烈的市场竞争中保持了稳定的增长态势,并逐步巩固了其在电子行业中的地位。
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 ...… 查看全部问答∨ |
|
本帖最后由 dontium 于 2015-1-23 12:47 编辑 Chuck向您介绍美国国家半导体的LMP90100/LMP91000可配置传感器模拟前端产品,以及可加快产品上市的精简集成式软硬件开发平台。 片段中介绍的产品为:LMP90100/LMP91000。 LMP90100 – 多通道24位传 ...… 查看全部问答∨ |
|