skype 发表于 2013-7-8 23:25:03

用M0516玩了一下多任务

http://v.youku.com/v_show/id_XNTgwNjA2MTMy.html

新唐M0516单片机做的一个多任务调度器,M0516单片机从2.4G上读取GPS信号值及3轴重力传感器的三轴值显示在LCD上!

int main(void)
{   

    SYS_Init();
    SPI1_Init();
    LCD_Init9320();
    GUI_Initialize();
        GUI_FillSCR(WHITE);

    /*---------------------------------------------------------------------------------------------------------*/
/* Init UART                                                                                             */
/*---------------------------------------------------------------------------------------------------------*/
    /* Reset IP */
   // SYS->IPRSTC2 |=SYS_IPRSTC2_UART0_RST_Msk;
//SYS->IPRSTC2 &= ~SYS_IPRSTC2_UART0_RST_Msk;

    /* Configure UART0 and set UART0 Baudrate */
   // UART0->BAUD = UART_BAUD_MODE2 | UART_BAUD_DIV_MODE2(SystemCoreClock, 115200);
//_UART_SET_DATA_FORMAT(UART0, UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1);
   
   
//printf("\n\nCPU @ %dHz\n", SystemCoreClock);
   


    if (SysTick_Config (SystemCoreClock/1000 *10)) //10ms tick
    { /* Setup SysTick for 10 msec interrupts */
      ;                                          /* Handle Error */
      while (1);
    }
    OS_MsgInt();                                          //初始化消息指针
    OSSemCreat(LCD, 1);                                     //lcd可用
    OSSemCreat(GPMRC, 1);                                 //数据区可用
    OSSemCreat(GPGSV, 1);                                 //数据区可用
    OSSemCreat(G_SENSOR, 1);                              //数据区可用
   
   
    //任务1,把从2.4g模块收到的GPS GPMRC数据送到LCD显示
    Ex_OSTaskCreate(Task0, (uint32_t *)&TASK0_STK, (uint32_t *)&TASK0_STK, Task0_Prio);
    //任务2,统计2.4G中断次数
    Ex_OSTaskCreate(Task1, (uint32_t *)&TASK1_STK, (uint32_t *)&TASK1_STK, Task1_Prio);
    //任务3,在LCD上显示CPU利用率
    Ex_OSTaskCreate(Task2, (uint32_t *)&TASK2_STK, (uint32_t *)&TASK2_STK, Task2_Prio);
    //任务4,在LCD上显示系统运行时间
    Ex_OSTaskCreate(Task3, (uint32_t *)&TASK3_STK, (uint32_t *)&TASK3_STK, Task3_Prio);
    //任务5,在LCD的一个区域上流动显示"- \ | * / | _"
    Ex_OSTaskCreate(Task4, (uint32_t *)&TASK4_STK, (uint32_t *)&TASK4_STK, Task4_Prio);
    //任务6,把从2.4g模块收到的GPS GPGSV数据送到LCD显示
    Ex_OSTaskCreate(Task5, (uint32_t *)&TASK5_STK, (uint32_t *)&TASK5_STK, Task5_Prio);
    //任务7,把从2.4g模块收到的3轴重力传感器分析数据送到LCD显示
    Ex_OSTaskCreate(Task6, (uint32_t *)&TASK6_STK, (uint32_t *)&TASK6_STK, Task6_Prio);
    //任务8,空闲任务,主要是统计CPU的利用率并送给任务3
    //任务9, NRF24L01中断接收任务,主要是负责把2.4G收到的数据读出来
    /*
        OSTaskCreate(Task0, (uint32_t *)&TASK0_STK, Task0_Prio);
    OSTaskCreate(Task1, (uint32_t *)&TASK1_STK, Task1_Prio);
    OSTaskCreate(Task2, (uint32_t *)&TASK2_STK, Task2_Prio);
    OSTaskCreate(Task3, (uint32_t *)&TASK3_STK, Task3_Prio);
    */
        OSStart();
   
    return 0;
}



hitler 发表于 2013-7-8 23:29:06

哎,用了5年的RTOS至今不知道具体原理,特别是上下文切换的撸过。。。。。一直没空。

lcr12 发表于 2013-8-2 08:48:33

这个是精简OS吗

skype 发表于 2013-8-2 10:56:31

是的,主要是为了小RAM的单片机跑OS

还有一个 发表于 2019-6-12 11:04:00

用的真溜。

huangqi412 发表于 2019-7-1 12:43:05

这是m0吗

rom 发表于 2019-7-1 13:28:18

程序写的不错,视频拍的要命,晃动成那样也不容易

ju2320601 发表于 2019-7-3 00:22:39

下载看看
页: [1]
查看完整版本: 用M0516玩了一下多任务