main.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include "main.h"
  2. #include "sram.h"
  3. #include "nandflash.h"
  4. #include "usart.h"
  5. #include "malloc.h"
  6. #include "demo_nand_fatfs.h"
  7. #include "cjson.h"
  8. #include "delay.h"
  9. #include "string.h"
  10. #include "includes.h"
  11. #include "led.h"
  12. #define Master
  13. #ifndef Master
  14. #define Slave
  15. #endif
  16. //设置任务优先级
  17. #define START_TASK_PRIO 10 //开始任务的优先级设置为最低
  18. //设置任务堆栈大小
  19. #define START_STK_SIZE 128
  20. //任务堆栈
  21. OS_STK START_TASK_STK[START_STK_SIZE];
  22. //任务函数
  23. void start_task(void *pdata);
  24. //LED任务
  25. //设置任务优先级
  26. #define LED_TASK_PRIO 9
  27. //设置任务堆栈大小
  28. #define LED_STK_SIZE 64
  29. //任务堆栈
  30. OS_STK LED_TASK_STK[LED_STK_SIZE];
  31. //任务函数
  32. void led_task(void *pdata);
  33. //网络状态灯任务
  34. #define NET_STATUS_LED_TASK_PRIO 8
  35. //设置任务堆栈大小
  36. #define NET_STATUS_LED_STK_SIZE 64
  37. //任务堆栈
  38. OS_STK NET_STATUS_LED_TASK_STK[NET_STATUS_LED_STK_SIZE];
  39. //任务函数
  40. void net_status_led_task(void *pdata);
  41. void NVIC_Configuration(void);
  42. int main(void)
  43. {
  44. delay_init();
  45. NVIC_Configuration();
  46. FSMC_SRAM_Init();
  47. my_mem_init(SRAMIN);
  48. my_mem_init(SRAMEX);
  49. //nandflash并不用初始化,调用fafts时会初始化
  50. LED_GPIO_Config();
  51. NET_STATUS_LED_Config();
  52. //spi sx1278初始化
  53. //ucos初始化
  54. OSInit();
  55. OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);
  56. OSStart(); //开启UCOS
  57. /* Infinite loop */
  58. while (1)
  59. {
  60. }
  61. }
  62. void start_task(void *pdata)
  63. {
  64. OS_CPU_SR cpu_sr;
  65. pdata = pdata ;
  66. OSStatInit(); //初始化统计任务
  67. OS_ENTER_CRITICAL(); //关中断
  68. #if LWIP_DHCP
  69. lwip_comm_dhcp_creat(); //创建DHCP任务
  70. OSTimeDlyHMSM(0,0,2,500);
  71. #endif
  72. OSTaskCreate(led_task,(void*)0,(OS_STK*)&LED_TASK_STK[LED_STK_SIZE-1],LED_TASK_PRIO);//创建LED任务
  73. 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任务
  74. OSTaskSuspend(OS_PRIO_SELF); //挂起start_task任务
  75. OS_EXIT_CRITICAL(); //开中断
  76. }
  77. //测试任务
  78. void led_task(void *pdata)
  79. {
  80. while(1)
  81. {
  82. LED(ON);
  83. OSTimeDlyHMSM(0,0,0,500);
  84. LED(OFF);
  85. OSTimeDlyHMSM(0,0,0,500);
  86. }
  87. }
  88. void net_status_led_task(void *pdata)
  89. {
  90. while(1)
  91. {
  92. NET_STATUS_LED(ON);
  93. OSTimeDlyHMSM(0,0,0,500);
  94. NET_STATUS_LED(OFF);
  95. OSTimeDlyHMSM(0,0,0,500);
  96. }
  97. }
  98. void bsp_Idle(void)
  99. {
  100. /* --- 喂狗 */
  101. /* --- 让CPU进入休眠,由Systick定时中断唤醒或者其他中断唤醒 */
  102. }
  103. /**
  104. * @brief 配置嵌套向量中断控制器NVIC分组
  105. * @param 无
  106. * @retval 无
  107. */
  108. void NVIC_Configuration(void)
  109. {
  110. NVIC_InitTypeDef NVIC_InitStructure;
  111. /* 嵌套向量中断控制器组选择 */
  112. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  113. }