+SYSBIOS例程学习方法初探
时间:10-02
整理:3721RD
点击:
裸机程序跑来跑去,都是一个样,不同的就是对应的外设初始化不同,但SYSBIOS对于我来说是一个比较新鲜的东西,感觉与cos ii等其他系统还是有区别的,所以主要就学习SYSBIOS了。
对于SYSBIOS的工程有很多函数是找不到源码的,这与现在的cos iii差不多,不开源。但是可以找到对应函数的说明与用法。现在就以GPIO_LED_CLOCK为例讲解一下。
首先是导入工程到CCS中。
还是先看main函数,这里还是有main函数的,有的系统是没有main的,入口函数是其他的。
但在main函数中是没有while(1);或for(;;)的,
- Int main()
- {
- // 外设使能配置
- PSCInit();
- // 管脚复用配置
- GPIOBankPinMuxSet();
- // GPIO 管脚初始化
- GPIOBankPinInit();
- // 创建一个时钟(时间以系统时钟为基准)
- Clock_Params clkParams;
- Clock_Params_init(&clkParams);
- clkParams.period = 1000;
- clkParams.startFlag = TRUE;
- Clock_create(clkMain, 5, &clkParams, NULL);
- // 启动 SYS/BIOS 系统
- BIOS_start();
- return(0);
- }
之后就是在关sysbios的内容了,但这都是什么意思呢?
若能顺利编译过SYSBIOS的例程,那么你一定是安装了bios_6_37_03_30,就在ti的安装目录中。如下图。
在这个目录中的这个文件打开,打开后是个网页。
从中找到你要找的组件中的函数。那怎么找呢?
在CCS5.5中,找到函数的声明的地方,例如Clock_create,在Clock.h中,在文件的最后,可以看到
它所属的组件是
- package ti.sysbios.knl;
在刚才的网页是找到这个组件的名字,那是个链接,点进去可以看到组件所包含的模块。
我们要找的就是:
- module Clock;
再点击就可以看到相应函数,结构体的内容。当然函数是没有源码的,只是对每个变量进行了说明。
- Clock_Handle Clock_create(Clock_FuncPtr clockFxn, UInt timeout, const Clock_Params *params, Error_Block *eb);
- clockFxn — Function that runs upon timeout
- timeout — One-shot timeout or initial start delay (in clock ticks)
- params — per-instance config params, or NULL to select default values (target-domain only)
- eb — active error-handling block, or NULL to select default policy (target-domain only)
- DETAILS
- The first argument is the function that gets called when the timeout expires.
- The 'timeout' argument is used to specify the initial timeout for both one-shot and periodic Clock instances (in Clock ticks).
- The period parameter is used to set the subsequent timeout interval (in Clock ticks) for periodic instances.
- For one-shot instances, the period parameter must be set to zero.
- 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。
最后就是启动系统
- // 启动 SYS/BIOS 系统
- BIOS_start();
clkMain就是在创建时钟时所指定的函数。
- Clock_create(clkMain, 5, &clkParams, NULL);