找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4311|回复: 0
打印 上一主题 下一主题
收起左侧

MM32L系列M0/M3内核产品移植HuaweiLite OS源码

[复制链接]
跳转到指定楼层
楼主
例程基于Huawei官方开发的样例进行修改,并保留华为官方的例程
上海灵动是国内专注于MCU产品与MCU应用方案的领先供应商,是中国工业及信息化部和上海市信息化办公室认定的集成电路设计企业,同时也是上海市认定的高新技术企业。自2011年3月成立至今,灵动微电子已经成功完成数百余MCU产品的设计及推广,灵动微电子目前已批量供货的基于ARM Cortex-M0及Cortex-M3 内核的MCU产品包括:针对通用高性能市场的MM32F系列,针对超低功耗及安全应用的MM32L系列,具有多种无线连接功能的MM32W系列,电机驱动及控制专用的MM32SPIN系列,以及OTP型的MM32P系列等,以满足客户及市场多领域、多层次的丰富应用场景需求。

实验器材:
    Mini Board Rev D1
   
实验目的:
    MM32L373PF搭载LiteOS运行双事务
   
硬件资源:
    1、LED1(PB5),LED2(PB4),LED3(PB3),LED4(PA15)
    2、WK_UP(PA0),KEY3(PB10),KEY4(PB11)
   
实验现象:
    1、上电后,LED1、LED2以流水灯的方式运行
        2、按下KEY3,LED5亮灭
        3、按下KEY4,LED6亮灭
   
注意事项:  
    1,VBAT需要供电

单片机源程序如下:

  1. /*
  2.        本程序适配MM32 MiniBoard /MCU-MM32L373PF
  3. */
  4. #include "los_sys.h"
  5. #include "los_tick.h"
  6. #include "los_task.ph"
  7. #include "los_config.h"

  8. #include "los_bsp_led.h"
  9. #include "los_bsp_key.h"
  10. #include "los_bsp_uart.h"
  11. #include "los_inspect_entry.h"
  12. #include "los_demo_entry.h"

  13. #include <string.h>
  14. #include "delay.h"

  15. extern void FunctionInit(void);

  16. //----------------------- First event -------------------------------//
  17. static UINT32 g_uwboadTaskID;
  18. LITE_OS_SEC_TEXT VOID LOS_BoadExampleTskfunc(VOID)
  19. {
  20.     while (1)
  21.     {
  22.         LOS_EvbLedControl(LOS_LED1, LED_ON);
  23.                                 LOS_EvbLedControl(LOS_LED2, LED_OFF);
  24.         LOS_EvbUartWriteStr("Board Test\n");
  25.         LOS_TaskDelay(500);
  26.         LOS_EvbLedControl(LOS_LED1, LED_OFF);
  27.                                 LOS_EvbLedControl(LOS_LED2, LED_ON);
  28.         LOS_TaskDelay(500);
  29.     }
  30. }
  31. void LOS_BoadExampleEntry(void)
  32. {
  33.     UINT32 uwRet;
  34.     TSK_INIT_PARAM_S stTaskInitParam;

  35.     (VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S));
  36.     stTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)LOS_BoadExampleTskfunc;
  37.     stTaskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE;
  38.     stTaskInitParam.pcName = "BoardDemo";
  39.     stTaskInitParam.usTaskPrio = 10;
  40.     uwRet = LOS_TaskCreate(&g_uwboadTaskID, &stTaskInitParam);

  41.     if (uwRet != LOS_OK)
  42.     {
  43.         return;
  44.     }
  45.     return;
  46. }

  47. //---------------------------Second event -------------------------//
  48. static UINT32 g_uwboadTaskID2;
  49. LITE_OS_SEC_TEXT VOID LOS_BoadKeyExampleTskfunc(VOID)
  50. {
  51.                 u8 t = 0;
  52.     while (1)
  53.     {
  54.                                 t = KEY_Scan(0);
  55.                                 switch(t)
  56.                                 {
  57.                                         case KEY3_PRES:                               
  58.                                                         LED3=!LED3;
  59.                                                         break;
  60.                                         case KEY4_PRES:                               
  61.                                                         LED4=!LED4;
  62.                                                         break;
  63.                                         default:
  64.                                                         LOS_TaskDelay(100);
  65.                                 }
  66.     }
  67. }

  68. void LOS_BoadKeyExampleEntry(void)
  69. {
  70.                 UINT32 uwRet;
  71.     TSK_INIT_PARAM_S stTaskInitParam;

  72.     (VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S));
  73.     stTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)LOS_BoadKeyExampleTskfunc;
  74.     stTaskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE;
  75.     stTaskInitParam.pcName = "BoardDemo";
  76.     stTaskInitParam.usTaskPrio = 10;
  77.     uwRet = LOS_TaskCreate(&g_uwboadTaskID2, &stTaskInitParam);

  78.     if (uwRet != LOS_OK)
  79.     {
  80.         return;
  81.     }
  82.     return;
  83. }

  84. /*****************************************************************************
  85. Function    : main
  86. Description : Main function entry
  87. Input       : None
  88. Output      : None
  89. Return      : None
  90. *****************************************************************************/
  91. LITE_OS_SEC_TEXT_INIT
  92. int main(void)
  93. {
  94.     UINT32 uwRet;
  95.    
  96.         //-------------------- Initialization function ------------------------//
  97.                 delay_init();
  98.                 FunctionInit();               // Init the device on the dev baord
  99.        
  100.     uwRet = LOS_KernelInit();     // Init LiteOS kernel.(if OS loading finished return 0)
  101.     if (uwRet != LOS_OK) {
  102.         return LOS_NOK;
  103.     }
  104.                
  105.    //---------------- Enable LiteOS system tick interrupt --------------//
  106.     LOS_EnableTick();

  107.          //------------------- Create Inspect task ---------------------------//
  108.     //LOS_Inspect_Entry();        // If use example cancel comment
  109.                 LOS_BoadExampleEntry();       // First event
  110.                 LOS_BoadKeyExampleEntry();    // Second event
  111.                

  112.          //------------------------ Running Kernel --------------------------//
  113.     LOS_Start();
  114.                
  115.          //-------------------- Your own function code ---------------------//
  116.     //for (;;);
  117.        
  118. }

复制代码

所有资料51hei提供下载:
LiteOS_MM32Miniboard_L073_Lib_keil5.zip (1.02 MB, 下载次数: 18)
LiteOS_MM32Miniboard_L073_Reg_keil5.zip (597.44 KB, 下载次数: 6)
LiteOS_MM32MiniBoard_L373_Lib_Keil5.zip (1.17 MB, 下载次数: 14)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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