一、实验说明:

消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。通常该指针指向一个包含了“消息”的特定数据结构。
二、实验截图:
三、源代码下载链接:
链接:https://pan.baidu.com/s/1o9JMmxG 密码: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链接:

【iCore4 双核心板_uC/OS-II】例程八:消息邮箱相关推荐

  1. 【iCore4 双核心板_uC/OS-II】例程九:消息队列

    一.实验说明: 前面介绍通过信息传递可以进行任务间的交流,信息也可以直接发送给一个任务,在uC/OS-II中每一个任务在它们内部都有一个消息队列,也即任务消息队列,用户可以直接给一个任务发送消息,不需 ...

  2. 【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II

    一.实验说明: 本例程移值入uC/OS-II,建立三个任务,红色和绿色LED分别以固定频率闪烁,并且打开串口工具, 输出浮点数据. 二.源代码下载链接: 链接:https://pan.baidu.co ...

  3. 【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用

    实验现象: 程序运行时,绿色led闪烁(目前,具体的乘法器调用请参考iCore3乘法器例程) 核心代码: module multiplier_ctrl(input clk_25m,input rst_ ...

  4. 【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)

    实验方法: 1.将跳线冒跳至USB_UART,通过Micro USB 线将iCore4 USB-UART接口与电脑相连. 2.打开PUTTY软件. 3.通过读U盘转接线将U盘(或者读卡器)与iCore ...

  5. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...

  6. 【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用

    实验现象: 按键每按下一次,三色LED改变一次状态. 核心代码: //--------------------module_rst_n---------------------------// mod ...

  7. 【iCore4 双核心板_ARM】例程三十八:DSP MATH库测试

    实验现象: 核心代码: int main(void) {/* USER CODE BEGIN 1 */int i,j;int res;float time[2];static int error_fl ...

  8. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输

    实验现象: 核心代码: int main(void) { system_clock.initialize(); //ϵͳʱÖÓ³õʼ»¯led.initialize(); //LED³õʼ» ...

  9. 【iCore4 双核心板_FPGA】例程十六:基于双口RAM的ARM+FPGA数据存取实验

    实验现象: 核心代码: int main(void) {/* USER CODE BEGIN 1 */int i;int address,data;char error_flag = 0;char r ...

  10. 【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式

    实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...

最新文章

  1. webmin下重启linux系统
  2. nodejs html转excel,Node.js excel sheetjs/js-xlsx
  3. linux服务器性能监控命令汇总(一)
  4. Virtools 3D行为编程系列(一)
  5. Apache Kafka 1.0.0正式发布!
  6. python中的基本数据结构
  7. 【Flink】Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
  8. 配置web工程的过程
  9. 八皇后问题程序及注解
  10. linux系统怎样挂载虚拟盘,linux 应用盘(从盘)挂载方法linux操作系统 -电脑资料...
  11. Android使用ksoap2调用C#中的webservice实现图像上传
  12. RBAC权限认证流程图
  13. NYOJ 90整数划分
  14. 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第三章课后习题答案
  15. SCADA电力系统基础业务知识
  16. python调用nmap扫描全端口_Python-通过调用Nmap来进行端口扫描
  17. 流光快门Matlab,华为手机流光快门太好玩了!这几个特效分分钟拍出大片感
  18. 光伏发电matlab模块,光伏发电的matlab仿真.docx
  19. 创建菜单与游戏界面(下)
  20. 游戏服务器和普通服务器的区别

热门文章

  1. JAVA作业 17-05-18
  2. 20162313苑洪铭第四周学习小结
  3. Nvelocity 第二章 注释语法
  4. Java开发笔记(一百五十)C3P0连接池的用法
  5. Spket,eclipse下安装Spket插件,格式化js
  6. 第4章 同步控制 Synchronization ----同步机制的摘要
  7. 实现自动登录:Filter 实现思路和方式
  8. [tips]ubuntu 12.04系统黑屏
  9. Oracle 数据库导出(exp)导入(imp)说明
  10. King Arthur