博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
阅读量:5129 次
发布时间:2019-06-13

本文共 3130 字,大约阅读时间需要 10 分钟。

一、实验说明:

  消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。通常该指针指向一个包含了“消息”的特定数据结构。
 
二、实验截图:
 
三、源代码下载链接:
链接: 密码:psk3
 
四、核心代码:
/* * Name                : main * Description         : --- * Author              : liu. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- *//*实验现象:  打开串口工具putty.exe,按下ARM.KEY按键,终端显示此时任务1的运行次数;松开按键,停止显示。  */int main(void){    system_clock.initialize();                               //系统时钟初始化    led.initialize();                                        //LED初始化    usart6.initialize(115200);                               //串口初始化    key.initialize();    usart6.printf("\x0c");                                   //清屏        usart6.printf("\033[1;32;40m");                          //设置字体终端为绿色    usart6.printf("\r\n Hello, I am iCore4!\r\n\r\n");    LED_RED_ON;    OSInit();     //UCOS初始化    OSTaskCreate(start_task,                                 //创建开始任务            (void*)0,                                   //任务参数            (OS_STK*)&START_TASK_STK[START_STK_SIZE-1], //任务堆栈            START_TASK_PRIO);                           //任务优先级    OSStart();                                               //开启UCOS    }
/* * Name                : start_task * Description         : --- * Author              : liu. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- */void start_task(void *pdata){    OS_CPU_SR cpu_sr;    TaskMbox = OSMboxCreate(0);//创建邮箱    OSStatInit();//初始化统计任务    OS_ENTER_CRITICAL();//关中断    OSTaskCreate(AppTask1_task,(void*)0,(OS_STK*)&AppTask1_TASK_STK[AppTask1_STK_SIZE-1],AppTask1_TASK_PRIO);//创建AppTask1任务    OSTaskCreate(AppTask2_task,(void*)0,(OS_STK*)&AppTask2_TASK_STK[AppTask2_STK_SIZE-1],AppTask2_TASK_PRIO);//创建AppTask2任务    OSTaskSuspend(OS_PRIO_SELF);//挂起start_task任务    OS_EXIT_CRITICAL();//开中断}
/* * Name                : AppTask1_task * Description         : --- * Author              : liu. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- */void AppTask1_task(void *pdata){    int timer = 0;    char cnt[20];    while(1){        if(ARM_KEY_STATE == KEY_DOWN){            timer++;            sprintf(cnt,"%d",timer);        //数据转换            OSMboxPost(TaskMbox, &cnt);     //发送邮箱        }        OSTimeDlyHMSM(0,0,0,500);         //延时500ms            }}/* * Name                : AppTask2_task * Description         : --- * Author              : liu. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- */void AppTask2_task(void *pdata){    u8 err;    u8 *s;    while(1){        s = (INT8U *)OSMboxPend(TaskMbox,OS_TICKS_PER_SEC,&err);        if(err == OS_ERR_NONE){            usart6.printf("\r\nThe number of task1 : %s\r\n",s);           //打印出邮箱的值            }        OSTimeDlyHMSM(0,0,0,500);                                        //延时500ms            }}

iCore4链接:

转载于:https://www.cnblogs.com/xiaomagee/p/8486824.html

你可能感兴趣的文章
Linux简单地隐藏文件及显示隐藏文件
查看>>
c和c++总结
查看>>
关于Unity中的transform组件(二)
查看>>
【BZOJ】2818: Gcd(欧拉函数+质数)
查看>>
【POJ】1935 Journey(树形dp)
查看>>
计算机二级教程python第一章 程序设计语言
查看>>
假如女人是一种编程语言,你会更喜欢哪一种
查看>>
debian 64位系统中添加对32位的支持
查看>>
基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)...
查看>>
如果遇到Hadoop集群正常,MapReduce作业运行出现错误,如何来查看作业运行日志(图文详解)...
查看>>
硬件驱动程序的知识点滴
查看>>
车牌号码正则表达式
查看>>
Tesseract 4 自行构建支持双引擎的tessdata 文件
查看>>
Find and kill the dead lock process
查看>>
CListCtrl 的应用
查看>>
mongodb
查看>>
合并指定表格指定行的相同文本的相邻单元格
查看>>
双屏幕,鼠标移动设置
查看>>
【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法
查看>>
《Entity Framework 6 Recipes》中文翻译——第十章EntityFramework存储过程处理(四)...
查看>>