买了块利尔达的开发板,想用KEIL 编译环境下的自带操作系统进行任务调度,在配置文件上,将rtx_config.c 文件复制到工程里,在跑程序的时候,操作系统只进行到初始化那一步,而没有去执行任务,不知道怎么回事,求教大虾指点,急得冒油了!
#include <RTL.h>
#include <LM3Sxxxx.H>
#include <lm3s6432.h>
#define LED_PERIPH SYSCTL_PERIPH_GPIOF
#define LED_PORT GPIO_PORTF_BASE
#define LED_PIN2 GPIO_PIN_2
#define LED_PIN3 GPIO_PIN_3
#define LED_PINS LED_PIN2|LED_PIN3
OS_TID id1,id2;
__task void task1(void) ;
__task void task2(void) ;
__task void task1(void)
{
unsigned char i;
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(LED_PORT,LED_PINS);
i=(0<<2)|(1<<3);
for (;;)
{
GPIOPinWrite(LED_PORT,LED_PINS,i);
i^=(1<<2)|(1<<3);
os_dly_wait(1000) ;
}
}
id1=os_tsk_self();
id2=os_tsk_create(task2,0);
for(;;)
{
int i;
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(LED_PORT,LED_PIN2);
i|=(1<<2);
for(;;)
{
GPIOPinWrite(LED_PORT,LED_PIN2,i);
i^=(1<<2);
os_dly_wait(2000);
}
os_evt_set(0x0003,id2);
os_evt_wait_or(0x0003,500);
os_dly_wait(5);
}
__task void task2(void)
{
for (;;)
{
int i;
os_evt_wait_or(0x0003,500);
os_dly_wait(5);
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(LED_PORT,LED_PIN3);
i|=(1<<3);
for (;;)
{
GPIOPinWrite(LED_PORT,LED_PIN3,i);
i^=(1<<3);
os_dly_wait(1000);
}
os_evt_set(0x0003,id1);
}
}
int main (void)
{
os_sys_init(task1);
}
此帖出自
小平头技术问答
一周热门 更多>