#include #include #include "nrf_delay.h" #include "SEGGER_RTT.h" #include "boards.h" #include "los_sys.h" #include "los_task.h" #define __HEAP_SIZE__ (16384) uint8_t _heap[__HEAP_SIZE__]; uint32_t __LOS_HEAP_ADDR_START__; uint32_t __LOS_HEAP_ADDR_END__; void* led_task(UINT32 arg) { for(;;) { if( arg < 4 ) bsp_board_led_invert(arg); LOS_TaskDelay(1000); } } UINT32 led1_task_handle; UINT32 led2_task_handle; int main(void) { TSK_INIT_PARAM_S task_param; TSK_INIT_PARAM_S task_param2; __LOS_HEAP_ADDR_START__ = (UINT32)_heap; __LOS_HEAP_ADDR_END__ = __LOS_HEAP_ADDR_START__ + __HEAP_SIZE__ -1; SEGGER_RTT_WriteString(0, "SEGGER Real-Time-Terminal For LiteOS Builder\r\n\r\n"); /* Configure board. */ bsp_board_init(BSP_INIT_LEDS); uint32_t retcd; retcd = LOS_KernelInit(); if( retcd == LOS_OK ) { PRINT_EMG("Initialize LiteOS Kernel successful!\r\n"); } else { PRINT_ERR("Initialize LiteOS Kernel failed!\r\n"); } task_param.pcName = "led1_task"; task_param.pfnTaskEntry = led_task; task_param.uwStackSize = 512; task_param.usTaskPrio = 4; task_param.uwArg = 0; retcd = LOS_TaskCreate(&led1_task_handle, &task_param); if( retcd == LOS_OK) { PRINT_EMG("Create led1 task successful!\r\n"); } else { PRINT_ERR("Create led1 task failed!\r\n"); } task_param2.pcName = "led2_task"; task_param2.pfnTaskEntry = led_task; task_param2.uwStackSize = 512; task_param2.usTaskPrio = 4; task_param2.uwArg = 3; retcd = LOS_TaskCreate(&led2_task_handle, &task_param2); if( retcd == LOS_OK) { PRINT_EMG("Create led2 task successful!\r\n"); } else { PRINT_ERR("Create led2 task failed!\r\n"); } LOS_Start(); /* Toggle LEDs. */ while (true) { for (int i = 0; i < LEDS_NUMBER; i++) { bsp_board_led_invert(i); nrf_delay_ms(500); } } }