博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iCore4 双核心板_uC/OS-II】例程四:软件定时器
阅读量:6004 次
发布时间:2019-06-20

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

一、实验说明:

  一些应用程序执行它们的任务时需要延迟一段特定的时间,因此uC/OS-II为我们提供了一些相应的

延时函数,本例程我们使用软件定时器定时500ms点亮相应的LED实现三色LED循环闪烁。

二、实验截图:

三、源代码下载链接:

链接: 密码:xuc7

四、核心代码:

/* * Name                : main * Description         : --- * Author              : zh. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- *//*实验现象:  红绿蓝三色灯循环定时点亮。  */int main(void){    system_clock.initialize();                               //系统时钟初始化    led.initialize();                                        //LED初始化    usart6.initialize(115200);                               //串口初始化    usart6.printf("\x0c");                                   //清屏        usart6.printf("\033[1;32;40m");                          //设置字体终端为绿色    usart6.printf("\r\nHello, I am iCore4!\r\n\r\n");    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(timer_task,(void*)0,(OS_STK*)&TIMER_TASK_STK[TIMER_STK_SIZE-1],TIMER_TASK_PRIO);//创建LED0任务    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 TmrCallback(OS_TMR *ptmr,void *p_arg){    static int counter = 0;    /*       LED_XX_ON        点亮相应LED       LED_XX_OFF    熄灭相应LED       三色LED交替闪烁*/    if(counter % 3 == 0){        LED_RED_ON;        LED_GREEN_OFF;        LED_BLUE_OFF;    }else if(counter % 3 == 1){        LED_RED_OFF;        LED_GREEN_ON;        LED_BLUE_OFF;    }else if(counter % 3 == 2){        LED_RED_OFF;        LED_GREEN_OFF;        LED_BLUE_ON;    }    counter ++;}
/* * Name                : led0_task * Description         : --- * Author              : liu. * * History * -------------------- * Rev                 : 0.00 * Date                : 07/12/2017 *  * create. * -------------------- */void timer_task(void *pdata){    INT8U    err;    OS_TMR   * soft_timer;//软件定时器    soft_timer = OSTmrCreate(10,10,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)TmrCallback,0,(INT8U *)"soft_timer",&err);//100ms执行一次    OSTmrStart(soft_timer,&err);//启动软件定时器             while(1){        OSTimeDlyHMSM(0,0,0,500);//延时500ms    }}/* * 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链接:

转载地址:http://ljdmx.baihongyu.com/

你可能感兴趣的文章
Java Socket 网络编程常见异常
查看>>
使用Eclipse调试Java程序的10个技巧
查看>>
Hive分桶表
查看>>
oracle10g 启动时报错:ORA-32004 ORA-19905
查看>>
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
PCB应用于哪些方面
查看>>
网络卡顿怎么办?
查看>>
Oracle的rowid
查看>>
Apache源码编译安装详解
查看>>
npm被墙解决方法
查看>>
实现Redis高可用
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>
卸载 mac 自带的php
查看>>
84个SEO面试问题---网络营销新手老手都值得一看
查看>>
Hadoop2.6.0学习笔记(八)Hadoop启动脚本介绍
查看>>
万众创新:你是一个优秀的程序员吗?
查看>>
CentOS 7 关闭触控板
查看>>
支付宝---手机APP支付
查看>>
关于使用mb_strlen函数报错处理
查看>>
Linux学习笔记3.1-Linux文件管理类命令详解
查看>>