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

一、实验说明:

  本例程移值入uC/OS-II,建立三个任务,红色和绿色LED分别以固定频率闪烁,并且打开串口工具,

输出浮点数据。

二、源代码下载链接:

链接:https://pan.baidu.com/s/1o9pY0uI 密码:5roo

三、核心代码:

/*
 * Name                : main
 * Description         : ---
 * Author              : zh.
 *
 * History
 * --------------------
 * Rev                 : 0.00
 * Date                : 07/12/2017
 * 
 * create.
 * --------------------
 */
 /*实验现象:
 红色和绿色LED灯分别以固定的频率闪烁,并且打开串口工具,可以看到有数据输出。
 */
int main(void)
{
    system_clock.initialize();                               //系统时钟初始化
    led.initialize();                                        //LED初始化
    usart6.initialize(115200);                               //串口初始化

    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;

    OSStatInit();//初始化统计任务

    OS_ENTER_CRITICAL();//关中断

    OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);//创建LED0任务
    OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);//创建LED1任务
    OSTaskCreate(usart_task,(void*)0,(OS_STK*)&USART_TASK_STK[USART_STK_SIZE-1],USART_TASK_PRIO);//创建usart任务
    OSTaskSuspend(OS_PRIO_SELF);//挂起start_task任务

    OS_EXIT_CRITICAL();//开中断
}
/*
 * Name                : led0_task
 * Description         : ---
 * Author              : liu.
 *
 * History
 * --------------------
 * Rev                 : 0.00
 * Date                : 07/12/2017
 * 
 * create.
 * --------------------
 */
void led0_task(void *pdata)
{
    while(1)
    {
        LED_RED_ON;                //红灯亮
        OSTimeDlyHMSM(0,0,0,500);  //延时500ms
        LED_RED_OFF;               //红灯灭
        OSTimeDlyHMSM(0,0,0,500);  //延时500ms
    }
}
/*
 * Name                : led_task
 * Description         : ---
 * Author              : liu.
 *
 * History
 * --------------------
 * Rev                 : 0.00
 * Date                : 07/12/2017
 * 
 * create.
 * --------------------
 */
void led1_task(void *pdata)
{
    while(1)
    {
        LED_GREEN_ON;               //绿灯亮
        OSTimeDlyHMSM(0,0,0,1000);  //延时1000ms
        LED_GREEN_OFF;              //绿灯灭
        OSTimeDlyHMSM(0,0,0,1000);  //延时1000ms
    }
}
/*
 * Name                : usart_task
 * Description         : ---
 * Author              : liu.
 *
 * History
 * --------------------
 * Rev                 : 0.00
 * Date                : 07/12/2017
 * 
 * create.
 * --------------------
 */
void usart_task(void *pdata)
{
  double f=0.1;

    while(1)
    {
        f+=0.1f;                                 //浮点型运算
        usart6.printf("float f=%.4f\r\n",f);     //串口输出
        OSTimeDlyHMSM(0,0,0,500);                //延时500ms
  }
}

iCore4链接:

posted @ 2018-01-29 11:10  XiaomaGee  阅读(738)  评论(0编辑  收藏  举报