微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +SYSBIOS例程学习方法初探

+SYSBIOS例程学习方法初探

时间:10-02 整理:3721RD 点击:

裸机程序跑来跑去,都是一个样,不同的就是对应的外设初始化不同,但SYSBIOS对于我来说是一个比较新鲜的东西,感觉与cos ii等其他系统还是有区别的,所以主要就学习SYSBIOS了。
对于SYSBIOS的工程有很多函数是找不到源码的,这与现在的cos iii差不多,不开源。但是可以找到对应函数的说明与用法。现在就以GPIO_LED_CLOCK为例讲解一下。
首先是导入工程到CCS中。


还是先看main函数,这里还是有main函数的,有的系统是没有main的,入口函数是其他的。
但在main函数中是没有while(1);或for(;;)的,

  1. Int main()
  2. {
  3.         // 外设使能配置
  4.         PSCInit();

  5.     // 管脚复用配置
  6.     GPIOBankPinMuxSet();

  7.     // GPIO 管脚初始化
  8.     GPIOBankPinInit();

  9.     // 创建一个时钟(时间以系统时钟为基准)
  10.     Clock_Params clkParams;

  11.     Clock_Params_init(&clkParams);
  12.     clkParams.period = 1000;
  13.     clkParams.startFlag = TRUE;
  14.     Clock_create(clkMain, 5, &clkParams, NULL);

  15.     // 启动 SYS/BIOS 系统
  16.     BIOS_start();

  17.     return(0);
  18. }

复制代码

Clock_Params clkParams;之前是GPIO的初始化 ,这与裸机时的程序没有什么不同。
之后就是在关sysbios的内容了,但这都是什么意思呢?
若能顺利编译过SYSBIOS的例程,那么你一定是安装了bios_6_37_03_30,就在ti的安装目录中。如下图。


在这个目录中的这个文件打开,打开后是个网页。


从中找到你要找的组件中的函数。那怎么找呢?
在CCS5.5中,找到函数的声明的地方,例如Clock_create,在Clock.h中,在文件的最后,可以看到


它所属的组件是

  1. package ti.sysbios.knl;

复制代码


在刚才的网页是找到这个组件的名字,那是个链接,点进去可以看到组件所包含的模块。


我们要找的就是:

  1. module Clock;

复制代码

再点进去,就可以看到Clock所使用到的结构体与函数声明。


再点击就可以看到相应函数,结构体的内容。当然函数是没有源码的,只是对每个变量进行了说明。

  1. Clock_Handle Clock_create(Clock_FuncPtr clockFxn, UInt timeout, const Clock_Params *params, Error_Block *eb);

  2. clockFxn — Function that runs upon timeout
  3. timeout — One-shot timeout or initial start delay (in clock ticks)
  4. params — per-instance config params, or NULL to select default values (target-domain only)
  5. eb — active error-handling block, or NULL to select default policy (target-domain only)

  6. DETAILS
  7. The first argument is the function that gets called when the timeout expires.
  8. The 'timeout' argument is used to specify the initial timeout for both one-shot and periodic Clock instances (in Clock ticks).
  9. The period parameter is used to set the subsequent timeout interval (in Clock ticks) for periodic instances.
  10. For one-shot instances, the period parameter must be set to zero.
  11. When instances are created they are placed upon a linked list managed by the Clock module. For this reason, instances cannot be created from either Hwi or Swi context.

复制代码


如此就像使用库函数一样使用SYSBIOS。
最后就是启动系统

  1. // 启动 SYS/BIOS 系统
  2.     BIOS_start();

复制代码

那么就会每5秒去运行一次clkMain函数。
clkMain就是在创建时钟时所指定的函数。

  1. Clock_create(clkMain, 5, &clkParams, NULL);

复制代码



上一篇:DSP2812的外设存储器
下一篇:自动测试仪

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

网站地图

Top