例程基于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需要供电
单片机源程序如下:
- /*
- 本程序适配MM32 MiniBoard /MCU-MM32L373PF
- */
- #include "los_sys.h"
- #include "los_tick.h"
- #include "los_task.ph"
- #include "los_config.h"
- #include "los_bsp_led.h"
- #include "los_bsp_key.h"
- #include "los_bsp_uart.h"
- #include "los_inspect_entry.h"
- #include "los_demo_entry.h"
- #include <string.h>
- #include "delay.h"
- extern void FunctionInit(void);
- //----------------------- First event -------------------------------//
- static UINT32 g_uwboadTaskID;
- LITE_OS_SEC_TEXT VOID LOS_BoadExampleTskfunc(VOID)
- {
- while (1)
- {
- LOS_EvbLedControl(LOS_LED1, LED_ON);
- LOS_EvbLedControl(LOS_LED2, LED_OFF);
- LOS_EvbUartWriteStr("Board Test\n");
- LOS_TaskDelay(500);
- LOS_EvbLedControl(LOS_LED1, LED_OFF);
- LOS_EvbLedControl(LOS_LED2, LED_ON);
- LOS_TaskDelay(500);
- }
- }
- void LOS_BoadExampleEntry(void)
- {
- UINT32 uwRet;
- TSK_INIT_PARAM_S stTaskInitParam;
- (VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S));
- stTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)LOS_BoadExampleTskfunc;
- stTaskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE;
- stTaskInitParam.pcName = "BoardDemo";
- stTaskInitParam.usTaskPrio = 10;
- uwRet = LOS_TaskCreate(&g_uwboadTaskID, &stTaskInitParam);
- if (uwRet != LOS_OK)
- {
- return;
- }
- return;
- }
- //---------------------------Second event -------------------------//
- static UINT32 g_uwboadTaskID2;
- LITE_OS_SEC_TEXT VOID LOS_BoadKeyExampleTskfunc(VOID)
- {
- u8 t = 0;
- while (1)
- {
- t = KEY_Scan(0);
- switch(t)
- {
- case KEY3_PRES:
- LED3=!LED3;
- break;
- case KEY4_PRES:
- LED4=!LED4;
- break;
- default:
- LOS_TaskDelay(100);
- }
- }
- }
- void LOS_BoadKeyExampleEntry(void)
- {
- UINT32 uwRet;
- TSK_INIT_PARAM_S stTaskInitParam;
- (VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S));
- stTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)LOS_BoadKeyExampleTskfunc;
- stTaskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE;
- stTaskInitParam.pcName = "BoardDemo";
- stTaskInitParam.usTaskPrio = 10;
- uwRet = LOS_TaskCreate(&g_uwboadTaskID2, &stTaskInitParam);
- if (uwRet != LOS_OK)
- {
- return;
- }
- return;
- }
- /*****************************************************************************
- Function : main
- Description : Main function entry
- Input : None
- Output : None
- Return : None
- *****************************************************************************/
- LITE_OS_SEC_TEXT_INIT
- int main(void)
- {
- UINT32 uwRet;
-
- //-------------------- Initialization function ------------------------//
- delay_init();
- FunctionInit(); // Init the device on the dev baord
-
- uwRet = LOS_KernelInit(); // Init LiteOS kernel.(if OS loading finished return 0)
- if (uwRet != LOS_OK) {
- return LOS_NOK;
- }
-
- //---------------- Enable LiteOS system tick interrupt --------------//
- LOS_EnableTick();
- //------------------- Create Inspect task ---------------------------//
- //LOS_Inspect_Entry(); // If use example cancel comment
- LOS_BoadExampleEntry(); // First event
- LOS_BoadKeyExampleEntry(); // Second event
-
- //------------------------ Running Kernel --------------------------//
- LOS_Start();
-
- //-------------------- Your own function code ---------------------//
- //for (;;);
-
- }
复制代码
所有资料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)
|