+SYS\BIOS入门介绍
TI的大部分芯片都支持SYS\BIOS:如下面的介绍:
SYS\BIOS程序流程说明:
1,外设初始化
2,BIOS_start();
说明:外设初始化:包含电源,IO口,串口,等外设。BIOS_start();是系统启动函数。
SYS\BIOS优先级说明:
HWI 是硬件中断程序。主要是IO外设的中断。包含定时器的中断。优先级最高。
SWI 是软件中断程序。主要是时钟的中断。和相应的不涉及外设的程序标志中断。优先级第二。
TASK 是任务程序。主要系统运行的主要任务。优先级第三。
LDLE是空闲程序。主要是系统运行的空闲任务。优先级最低。
详细说明如图:
硬件中断线程:
硬件中断相关函数:
在SYS\BIOS的程序有有些函数不能全程使用的,都有限制的,使用在使用中需注意相关的限制:如图
下面是使用创龙的程序修改后的 不知道为什么,运行不了:
麻烦大家看看:
如下:
/****************************************************************************/
/* */
/* 延时 */
/* */
/****************************************************************************/
Void Delay(UInt n)
{
UInt i;
for(i=n; i>0; i--);
}
/****************************************************************************/
/* */
/* 空闲任务 */
/* */
/****************************************************************************/
Void LEDStatus(Void)
{
System_printf("Enter LEDStatus\n");
GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_LOW);
Task_sleep(5000);
GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_HIGH);
System_printf("Exit LEDStatus\n");
System_flush();
}
/****************************************************************************/
/* */
/* 任务 2 */
/* */
/****************************************************************************/
Void led_timer3(UArg a0)
{
System_printf("Enter taskMain1()\n");
flag2=1;
System_printf("exit taskMain1()\n");
System_flush();
}
/****************************************************************************/
/* */
/* 任务 1 */
/* */
/****************************************************************************/
Void Timer_Isr(UArg a0)
{
System_printf("Enter taskMain()\n");
flag1=1;
System_printf("exit taskMain()\n");
System_flush();
}
Void led2(void)
{
while(flag2)
{
flag2=0;
GPIOPinWrite(SOC_GPIO_0_REGS, 1, 0);
GPIOPinWrite(SOC_GPIO_0_REGS, 2, 0);
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 1, 1);
GPIOPinWrite(SOC_GPIO_0_REGS, 2, 1);
}
}
Void led1(void)
{
while(flag1)
{
flag1=0;
GPIOPinWrite(SOC_GPIO_0_REGS, 6, 0);
GPIOPinWrite(SOC_GPIO_0_REGS, 3, 0);
// 延时
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 6, 1);
GPIOPinWrite(SOC_GPIO_0_REGS, 3, 1);
}
}
/****************************************************************************/
/* */
/* 主函数 */
/* */
/****************************************************************************/
Int main()
{
// 外设使能配置
PSCInit();
// 管脚复用配置
GPIOBankPinMuxSet();
// GPIO 管脚初始化
GPIOBankPinInit();
// 启动 SYS/BIOS 系统
BIOS_start();
led1();
led2();
return(0);
}IS
报错如下:Enter LEDStatusEnter taskMain()
exit taskMain()
ti.sysbios.gates.GateMutex: line 97: assertion failure: A_badContext: bad calling context. See GateMutex API doc for details.
xdc.runtime.Error.raise: terminating execution
5、XDCtools
学习中………………