+SYSBIOS例程学习再探(一个问题解决)
时间:10-02
整理:3721RD
点击:
再探内容:
上次的贴子(http://bbs.elecfans.com/forum.ph ... d=519208&extra=)讲了如何找到SYSBIOS中的一些函数的说明及用法。但还是有一些遗漏。此次补充一下,以及解决一些网友的问题。
上次说到,新建clock时,指定了一个函数,这个函数会周期性的运行,这个周期就是这个函数参数中的“5”。
但同时也注意到了另一个函数,就是:
这个函数的说明是一个空闲任务,就是在其他的任务都没有运行,或都在sleep的时候运行的任务,但是程序中并没有找到新建这个任务的程序,那么,它是在哪里建立的呢?
那就要看这个cfg文件了。
打开cfg文件,右键cfg文件,选择打开方式。
之后 ,可以看到如下界面。点击标出的连接。
可以看到:
在上图中,的Thrdads框中,可以看到空闲任务,Idle,点击进入 ,可以看到
在User idle function 0后,可以看到在main文件中的那个LEDSatus函数的名字,空闲任务就是从这里与系统关联在一起的。也可以看到在下面还可以再新建其他的空闲任务,空闲任务也不止是一个的。
而关于BIOS_start();函数,可以按上篇文章的方法可以看到它的说明:
一个问题:
若是直接把光盘中的SYSBIOS整个文件夹复制到工作空间中,直接导入工程编译后会出现错误与警告。
这是因为Platform目录的路径设置不正确的原因。可以这样更改。
还有一个地方,就是Compoler version:的不同而存在的一个警告
更改成一样的版本后,再编译一直工程,就什么错误与警告也没有了。
上次的贴子(http://bbs.elecfans.com/forum.ph ... d=519208&extra=)讲了如何找到SYSBIOS中的一些函数的说明及用法。但还是有一些遗漏。此次补充一下,以及解决一些网友的问题。
上次说到,新建clock时,指定了一个函数,这个函数会周期性的运行,这个周期就是这个函数参数中的“5”。
- Clock_create(clkMain, 5, &clkParams, NULL);
但同时也注意到了另一个函数,就是:
- Void LEDStatus(Void)
- {
- System_printf("Enter LEDStatus\n");
- GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
- Task_sleep(2500);
- GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
- System_printf("Exit LEDStatus\n");
- System_flush();
- }
这个函数的说明是一个空闲任务,就是在其他的任务都没有运行,或都在sleep的时候运行的任务,但是程序中并没有找到新建这个任务的程序,那么,它是在哪里建立的呢?
那就要看这个cfg文件了。
打开cfg文件,右键cfg文件,选择打开方式。
之后 ,可以看到如下界面。点击标出的连接。
可以看到:
在上图中,的Thrdads框中,可以看到空闲任务,Idle,点击进入 ,可以看到
在User idle function 0后,可以看到在main文件中的那个LEDSatus函数的名字,空闲任务就是从这里与系统关联在一起的。也可以看到在下面还可以再新建其他的空闲任务,空闲任务也不止是一个的。
而关于BIOS_start();函数,可以按上篇文章的方法可以看到它的说明:
- DETAILS
- The user's main() function is required to call this function after all other user initializations have been performed.
- This function does not return.
- This function performs any remaining SYS/BIOS initializations and then transfers control to the highest priority ready task if taskEnabled is true. If taskEnabled is false, control is transferred directly to the Idle Loop.
- The SYS/BIOS start sequence is as follows:
- Invoke all the functions in the startupFxns array.
- call Hwi_startup() to enable interrupts.
- if swiEnabled is true, call Swi_startup() to enable the Swi scheduler.
- Start any statically created or constructed Timers in the Timer_StartMode_AUTO mode.
- if taskEnabled is true, enable the Task scheduler and transfer the execution thread to the highest priority task in the Task_Mode_READY mode.
- Otherwise, fall directly into the Idle Loop.
一个问题:
若是直接把光盘中的SYSBIOS整个文件夹复制到工作空间中,直接导入工程编译后会出现错误与警告。
这是因为Platform目录的路径设置不正确的原因。可以这样更改。
还有一个地方,就是Compoler version:的不同而存在的一个警告
更改成一样的版本后,再编译一直工程,就什么错误与警告也没有了。
Mark,学习了,sysbios还没来得及研究呢。小编真是快啊。