找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5060|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MM32L系列M0/M3內(nèi)核產(chǎn)品移植HuaweiLite OS源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
例程基于Huawei官方開發(fā)的樣例進(jìn)行修改,并保留華為官方的例程
上海靈動(dòng)是國內(nèi)專注于MCU產(chǎn)品與MCU應(yīng)用方案的領(lǐng)先供應(yīng)商,是中國工業(yè)及信息化部和上海市信息化辦公室認(rèn)定的集成電路設(shè)計(jì)企業(yè),同時(shí)也是上海市認(rèn)定的高新技術(shù)企業(yè)。自2011年3月成立至今,靈動(dòng)微電子已經(jīng)成功完成數(shù)百余MCU產(chǎn)品的設(shè)計(jì)及推廣,靈動(dòng)微電子目前已批量供貨的基于ARM Cortex-M0及Cortex-M3 內(nèi)核的MCU產(chǎn)品包括:針對通用高性能市場的MM32F系列,針對超低功耗及安全應(yīng)用的MM32L系列,具有多種無線連接功能的MM32W系列,電機(jī)驅(qū)動(dòng)及控制專用的MM32SPIN系列,以及OTP型的MM32P系列等,以滿足客戶及市場多領(lǐng)域、多層次的豐富應(yīng)用場景需求。

實(shí)驗(yàn)器材:
    Mini Board Rev D1
   
實(shí)驗(yàn)?zāi)康?
    MM32L373PF搭載LiteOS運(yùn)行雙事務(wù)
   
硬件資源:
    1、LED1(PB5),LED2(PB4),LED3(PB3),LED4(PA15)
    2、WK_UP(PA0),KEY3(PB10),KEY4(PB11)
   
實(shí)驗(yàn)現(xiàn)象:
    1、上電后,LED1、LED2以流水燈的方式運(yùn)行
        2、按下KEY3,LED5亮滅
        3、按下KEY4,LED6亮滅
   
注意事項(xiàng):  
    1,VBAT需要供電

單片機(jī)源程序如下:

  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. }

復(fù)制代碼

所有資料51hei提供下載:
LiteOS_MM32Miniboard_L073_Lib_keil5.zip (1.02 MB, 下載次數(shù): 18)
LiteOS_MM32Miniboard_L073_Reg_keil5.zip (597.44 KB, 下載次數(shù): 6)
LiteOS_MM32MiniBoard_L373_Lib_Keil5.zip (1.17 MB, 下載次數(shù): 14)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表