zoukankan      html  css  js  c++  java
  • 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱

    一、实验说明:

      消息邮箱是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("33[1;32;40m");                          //设置字体终端为绿色
        usart6.printf("
     Hello, I am iCore4!
    
    ");
        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("
    The number of task1 : %s
    ",s);           //打印出邮箱的值    
            }
            OSTimeDlyHMSM(0,0,0,500);                                        //延时500ms        
        }
    }

    iCore4链接:

  • 相关阅读:
    Python的扩展接口[1] -> 串口通信
    Python的扩展接口[0] -> VISA仪器控制
    Python的工具包[2] -> matplotlib图像绘制 -> matplotlib 库及使用总结
    Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结
    Python的工具包[0] -> numpy科学计算 -> numpy 库及使用总结
    Python的Web编程[1] -> Web服务器[0] -> Web 服务器与 CGI / WSGI
    Python的Web编程[0] -> Web客户端[1] -> Web 页面解析
    Python的Web编程[0] -> Web客户端[0] -> 统一资源定位符 URL
    Python与正则表达式[0] -> re 模块的正则表达式匹配
    解决Wamp的 Error D:wamp or PHP path 错误
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/8486824.html
Copyright © 2011-2022 走看看