微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +SYS/BIOS中的定时服务

+SYS/BIOS中的定时服务

时间:10-02 整理:3721RD 点击:
对于SYS/BIOS之前不敢碰触,总感觉涉及系统、任务、线程这些与操作系统相关的名字让人望而生畏!但是要使用C6655的网络功能,又想让DSP用起来更有“范儿”,打算硬着头皮来了解一下。借助创龙提供的例程由简入手,就选择了SYS/BIOS例程中的第一个入手。
SYS/BIOS中的定时服务内容描述见TI SYS/BIOS v6.35 Real-time Operating SystemUser's Guide(Literature Number: SPRUEX3M)的第5章节:Timing Services
涉及计时和时钟相关服务包括以下几个模块:
  • The ti.sysbios.knl.Clock模块
  • The ti.sysbios.hal.Timer 模块
  • The xdc.runtime.Timestamp模块
例程SYSBIOS_Clock正是使用的SYS/BIOS的定时服务功能。
代码内容简短,但信息量庞大。

  1. Int main()
  2. {
  3.         // 取得芯片型号
  4.         DSPChipType = DSPTypeGet();

  5.         LEDInit();

  6.     // 创建一个时钟(时间以系统时钟为基准)
  7.     Clock_Params ClkParams;

  8.     Clock_Params_init(&ClkParams);
  9.     ClkParams.period = 1000; // 执行周期为 1000ms
  10.     ClkParams.startFlag = TRUE;
  11.     // 初始化为 5000ms 后执行
  12.     Clock_create(ClkMain, 5000, &ClkParams, NULL);

  13.     // 启动 SYS/BIOS 系统
  14.     BIOS_start();

  15.     return(0);
  16. }

复制代码

LEDInit();是用来初始化板子上LED参数的,具体就是配置GPIO.函数原型在BoardOS.c文件中定义。可以通过Ctrl+鼠标左键单击跳转至函数原型,前提是已经设置了该工程的关联内容:
在CCS中同时打开BoardOS_Tronlong_TL665x_TL6678这个工程,在SYSBIOS_Clock工程中右键查看工程属性:


然后Add,并选择BoardOS_Tronlong_TL665x_TL6678这个工程


Void ClkMain(UArg arg)这个函数就是定时超时要执行的内容。
Clock_create(ClkMain, 5000, &ClkParams, NULL);这个函数定义了超时值为5000ms
整个例程核心代码就这么多,但是涉及了SYS/BIOS的好多知识,需要用户详细阅读SYS/BIOS手册第5章节来理解这些内容。


上图红色部分为时钟服务章节的描述。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top