搜索
bottom↓
回复: 7

用M0516玩了一下多任务

[复制链接]

出0入8汤圆

发表于 2013-7-8 23:25:03 | 显示全部楼层 |阅读模式
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[TASK0_TCB_SIZE-1], (uint32_t *)&TASK0_STK, Task0_Prio);
    //任务2,统计2.4G中断次数
    Ex_OSTaskCreate(Task1, (uint32_t *)&TASK1_STK[TASK1_TCB_SIZE-1], (uint32_t *)&TASK1_STK, Task1_Prio);
    //任务3,在LCD上显示CPU利用率
    Ex_OSTaskCreate(Task2, (uint32_t *)&TASK2_STK[TASK2_TCB_SIZE-1], (uint32_t *)&TASK2_STK, Task2_Prio);
    //任务4,在LCD上显示系统运行时间
    Ex_OSTaskCreate(Task3, (uint32_t *)&TASK3_STK[TASK3_TCB_SIZE-1], (uint32_t *)&TASK3_STK, Task3_Prio);
    //任务5,在LCD的一个区域上流动显示"- \ | * / | _"
    Ex_OSTaskCreate(Task4, (uint32_t *)&TASK4_STK[TASK4_TCB_SIZE-1], (uint32_t *)&TASK4_STK, Task4_Prio);
    //任务6,把从2.4g模块收到的GPS GPGSV数据送到LCD显示
    Ex_OSTaskCreate(Task5, (uint32_t *)&TASK5_STK[TASK5_TCB_SIZE-1], (uint32_t *)&TASK5_STK, Task5_Prio);
    //任务7,把从2.4g模块收到的3轴重力传感器分析数据送到LCD显示
    Ex_OSTaskCreate(Task6, (uint32_t *)&TASK6_STK[TASK6_TCB_SIZE-1], (uint32_t *)&TASK6_STK, Task6_Prio);
    //任务8,空闲任务,主要是统计CPU的利用率并送给任务3
    //任务9, NRF24L01中断接收任务,主要是负责把2.4G收到的数据读出来
    /*
        OSTaskCreate(Task0, (uint32_t *)&TASK0_STK[TASK0_TCB_SIZE-1], Task0_Prio);
    OSTaskCreate(Task1, (uint32_t *)&TASK1_STK[TASK1_TCB_SIZE-1], Task1_Prio);
    OSTaskCreate(Task2, (uint32_t *)&TASK2_STK[TASK2_TCB_SIZE-1], Task2_Prio);
    OSTaskCreate(Task3, (uint32_t *)&TASK3_STK[TASK3_TCB_SIZE-1], Task3_Prio);
    */
        OSStart();
   
    return 0;
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-7-8 23:29:06 | 显示全部楼层
哎,用了5年的RTOS至今不知道具体原理,特别是上下文切换的撸过。。。。。一直没空。

出0入0汤圆

发表于 2013-8-2 08:48:33 | 显示全部楼层
这个是精简OS吗

出0入8汤圆

 楼主| 发表于 2013-8-2 10:56:31 | 显示全部楼层
是的,主要是为了小RAM的单片机跑OS

出0入0汤圆

发表于 2019-6-12 11:04:00 | 显示全部楼层
用的真溜。

出0入0汤圆

发表于 2019-7-1 12:43:05 | 显示全部楼层
这是m0吗

出0入0汤圆

发表于 2019-7-1 13:28:18 | 显示全部楼层
程序写的不错,视频拍的要命,晃动成那样也不容易

出0入0汤圆

发表于 2019-7-3 00:22:39 来自手机 | 显示全部楼层
下载看看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表