#include "main.h" #include "sram.h" #include "nandflash.h" #include "usart.h" #include "malloc.h" #include "demo_nand_fatfs.h" #include "cjson.h" #include "delay.h" #include "string.h" #include "includes.h" #include "led.h" #define Master #ifndef Master #define Slave #endif //设置任务优先级 #define START_TASK_PRIO 10 //开始任务的优先级设置为最低 //设置任务堆栈大小 #define START_STK_SIZE 128 //任务堆栈 OS_STK START_TASK_STK[START_STK_SIZE]; //任务函数 void start_task(void *pdata); //LED任务 //设置任务优先级 #define LED_TASK_PRIO 9 //设置任务堆栈大小 #define LED_STK_SIZE 64 //任务堆栈 OS_STK LED_TASK_STK[LED_STK_SIZE]; //任务函数 void led_task(void *pdata); //网络状态灯任务 #define NET_STATUS_LED_TASK_PRIO 8 //设置任务堆栈大小 #define NET_STATUS_LED_STK_SIZE 64 //任务堆栈 OS_STK NET_STATUS_LED_TASK_STK[NET_STATUS_LED_STK_SIZE]; //任务函数 void net_status_led_task(void *pdata); void NVIC_Configuration(void); int main(void) { delay_init(); NVIC_Configuration(); FSMC_SRAM_Init(); my_mem_init(SRAMIN); my_mem_init(SRAMEX); //nandflash并不用初始化,调用fafts时会初始化 LED_GPIO_Config(); NET_STATUS_LED_Config(); //spi sx1278初始化 //ucos初始化 OSInit(); OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); OSStart(); //开启UCOS /* Infinite loop */ while (1) { } } void start_task(void *pdata) { OS_CPU_SR cpu_sr; pdata = pdata ; OSStatInit(); //初始化统计任务 OS_ENTER_CRITICAL(); //关中断 #if LWIP_DHCP lwip_comm_dhcp_creat(); //创建DHCP任务 OSTimeDlyHMSM(0,0,2,500); #endif OSTaskCreate(led_task,(void*)0,(OS_STK*)&LED_TASK_STK[LED_STK_SIZE-1],LED_TASK_PRIO);//创建LED任务 OSTaskCreate(net_status_led_task,(void*)0,(OS_STK*)&NET_STATUS_LED_TASK_STK[NET_STATUS_LED_STK_SIZE-1],NET_STATUS_LED_TASK_PRIO);//创建LED任务 OSTaskSuspend(OS_PRIO_SELF); //挂起start_task任务 OS_EXIT_CRITICAL(); //开中断 } //测试任务 void led_task(void *pdata) { while(1) { LED(ON); OSTimeDlyHMSM(0,0,0,500); LED(OFF); OSTimeDlyHMSM(0,0,0,500); } } void net_status_led_task(void *pdata) { while(1) { NET_STATUS_LED(ON); OSTimeDlyHMSM(0,0,0,500); NET_STATUS_LED(OFF); OSTimeDlyHMSM(0,0,0,500); } } void bsp_Idle(void) { /* --- 喂狗 */ /* --- 让CPU进入休眠,由Systick定时中断唤醒或者其他中断唤醒 */ } /** * @brief 配置嵌套向量中断控制器NVIC分组 * @param 无 * @retval 无 */ void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* 嵌套向量中断控制器组选择 */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); }