main.c 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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 "led.h"
  11. #include "log.h"
  12. #include "task.h"
  13. #include "myfile.h"
  14. //设置任务优先级
  15. #define START_TASK_PRIO 10 //开始任务的优先级设置为最低
  16. //设置任务堆栈大小
  17. #define START_STK_SIZE 128
  18. //任务堆栈
  19. __align(8) OS_STK START_TASK_STK[START_STK_SIZE];
  20. //任务函数
  21. void start_task(void *pdata);
  22. //LED任务
  23. //设置任务优先级
  24. #define LED_TASK_PRIO 9
  25. //设置任务堆栈大小
  26. #define LED_STK_SIZE 64
  27. //任务堆栈
  28. OS_STK LED_TASK_STK[LED_STK_SIZE];
  29. //任务函数
  30. void led_task(void *pdata);
  31. //网络状态灯任务
  32. #define NET_STATUS_LED_TASK_PRIO 8
  33. //设置任务堆栈大小
  34. #define NET_STATUS_LED_STK_SIZE 64
  35. //任务堆栈
  36. OS_STK NET_STATUS_LED_TASK_STK[NET_STATUS_LED_STK_SIZE];
  37. //任务函数
  38. void net_status_led_task(void *pdata);
  39. OS_STK DATA_TASK_STK[DATA_STK_SIZE];
  40. void NVIC_Configuration(void);
  41. int main(void){
  42. delay_init();
  43. NVIC_Configuration();
  44. my_mem_init(SRAMEX);
  45. my_mem_init(SRAMIN);
  46. USART_232_config();
  47. LED_GPIO_Config();
  48. NET_STATUS_LED_Config();
  49. USART_485_config();
  50. /*
  51. char *lora_test_json=mymalloc(SRAMEX,9*1024);
  52. lora_test_json="{\"bandwidth\":250,\"codeRate\":4700,\"commandTopic\":\"/device/297877563234/command\",\"dataRate\":7,\"dataSource\":2,\"deviceId\":\"297877563234\",\"host\":\"36.134.23.11\",\"inboundTime\":1000,\"messageTopic\":\"/device/297877563234\",\"node_1\":{\"device_1\":{\"sensorList\":[{\"identifier\":\"electric_fr\",\"deviceID645\":\"297800000001\",\"identifier645\":41943042},{\"identifier\":\"pActiveEnergy\",\"deviceID645\":\"297800000001\",\"identifier645\":65536},{\"identifier\":\"rActiveEnergy\",\"deviceID645\":\"297800000001\",\"identifier645\":131072},{\"identifier\":\"activePower\",\"deviceID645\":\"297800000001\",\"identifier645\":33751040},{\"identifier\":\"electric_fra\",\"deviceID645\":\"297800000001\",\"identifier645\":33751296},{\"identifier\":\"electric_frb\",\"deviceID645\":\"297800000001\",\"identifier645\":33751552},{\"identifier\":\"electric_frc\",\"deviceID645\":\"297800000001\",\"identifier645\":33751808},{\"identifier\":\"Ua\",\"deviceID645\":\"297800000001\",\"identifier645\":33620224},{\"identifier\":\"Ub\",\"deviceID645\":\"297800000001\",\"identifier645\":33620480},{\"identifier\":\"Uc\",\"deviceID645\":\"297800000001\",\"identifier645\":33620736},{\"identifier\":\"Ia\",\"deviceID645\":\"297800000001\",\"identifier645\":33685760},{\"identifier\":\"Ib\",\"deviceID645\":\"297800000001\",\"identifier645\":33686016},{\"identifier\":\"Ic\",\"deviceID645\":\"297800000001\",\"identifier645\":33686272},{\"identifier\":\"reactivePower\",\"deviceID645\":\"297800000001\",\"identifier645\":33816576},{\"identifier\":\"electric_pqa\",\"deviceID645\":\"297800000001\",\"identifier645\":33619968},{\"identifier\":\"electric_pqb\",\"deviceID645\":\"297800000001\",\"identifier645\":33685504},{\"identifier\":\"electric_pqc\",\"deviceID645\":\"297800000001\",\"identifier645\":33751040},{\"identifier\":\"powerFactor\",\"deviceID645\":\"297800000001\",\"identifier645\":33947648},{\"identifier\":\"electric_pfa\",\"deviceID645\":\"297800000001\",\"identifier645\":33947904},{\"identifier\":\"electric_pfb\",\"deviceID645\":\"297800000001\",\"identifier645\":33948160},{\"identifier\":\"electric_pfc\",\"deviceID645\":\"297800000001\",\"identifier645\":33948416},{\"identifier\":\"innerTemp\",\"deviceID645\":\"297800000001\",\"identifier645\":41943047},{\"identifier\":\"lastMonthEnergy\",\"deviceID645\":\"297800000001\",\"identifier645\":65537},{\"identifier\":\"lastTwoMonthEnergy\",\"deviceID645\":\"297800000001\",\"identifier645\":65538},{\"identifier\":\"totalPostMaximum\",\"deviceID645\":\"297800000001\",\"identifier645\":16842752},{\"identifier\":\"lastPostMaximum\",\"deviceID645\":\"297800000001\",\"identifier645\":16842753}],\"commandList\":[],\"deviceId\":\"297800000001\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1,\"protocol\":2},\"device_2\":{\"sensorList\":[{\"identifier\":\"electric_fr\",\"deviceID645\":\"297800000002\",\"identifier645\":41943042},{\"identifier\":\"activePower\",\"deviceID645\":\"297800000002\",\"identifier645\":33751040},{\"identifier\":\"electric_fra\",\"deviceID645\":\"297800000002\",\"identifier645\":33751296},{\"identifier\":\"electric_frb\",\"deviceID645\":\"297800000002\",\"identifier645\":33751552},{\"identifier\":\"electric_frc\",\"deviceID645\":\"297800000002\",\"identifier645\":33751808},{\"identifier\":\"Ua\",\"deviceID645\":\"297800000002\",\"identifier645\":33620224},{\"identifier\":\"Ub\",\"deviceID645\":\"297800000002\",\"identifier645\":33620480},{\"identifier\":\"Uc\",\"deviceID645\":\"297800000002\",\"identifier645\":33620736},{\"identifier\":\"Ia\",\"deviceID645\":\"297800000002\",\"identifier645\":33685760},{\"identifier\":\"Ib\",\"deviceID645\":\"297800000002\",\"identifier645\":33686016},{\"identifier\":\"Ic\",\"deviceID645\":\"297800000002\",\"identifier645\":33686272},{\"identifier\":\"reactivePower\",\"deviceID645\":\"297800000002\",\"identifier645\":33816576},{\"identifier\":\"electric_pqa\",\"deviceID645\":\"297800000002\",\"identifier645\":33619968},{\"identifier\":\"electric_pqb\",\"deviceID645\":\"297800000002\",\"identifier645\":33685504},{\"identifier\":\"electric_pqc\",\"deviceID645\":\"297800000002\",\"identifier645\":33751040},{\"identifier\":\"powerFactor\",\"deviceID645\":\"297800000002\",\"identifier645\":33947648},{\"identifier\":\"electric_pfa\",\"deviceID645\":\"297800000002\",\"identifier645\":33947904},{\"identifier\":\"electric_pfb\",\"deviceID645\":\"297800000002\",\"identifier645\":33948160},{\"identifier\":\"electric_pfc\",\"deviceID645\":\"297800000002\",\"identifier645\":33948416},{\"identifier\":\"innerTemp\",\"deviceID645\":\"297800000002\",\"identifier645\":41943047},{\"identifier\":\"lastMonthEnergy\",\"deviceID645\":\"297800000002\",\"identifier645\":65537},{\"identifier\":\"lastTwoMonthEnergy\",\"deviceID645\":\"297800000002\",\"identifier645\":65538},{\"identifier\":\"totalPostMaximum\",\"deviceID645\":\"297800000002\",\"identifier645\":16842752},{\"identifier\":\"lastPostMaximum\",\"deviceID645\":\"297800000002\",\"identifier645\":16842753}],\"commandList\":[],\"deviceId\":\"297800000002\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1,\"protocol\":2},\"nodeId\":\"1F6E\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1,\"protocol\":2},\"node_2\":{\"device_1\":{\"sensorList\":[{\"registerByteNum\":4,\"identifier\":\"WaterConsumption\",\"rFunctionCode\":3,\"registerAddress\":0,\"slaveAddress\":4,\"bigLittleFormat\":1,\"precise\":2,\"dataType\":1},{\"registerByteNum\":1,\"identifier\":\"WaterOutletSwitch\",\"rFunctionCode\":1,\"registerAddress\":0,\"slaveAddress\":4,\"bigLittleFormat\":1,\"precise\":0,\"dataType\":1}],\"commandList\":[{\"registerByteNum\":1,\"identifier\":\"WaterOutletSwitch\",\"registerAddress\":0,\"slaveAddress\":4,\"bigLittleFormat\":1,\"wFunctionCode\":5,\"dataType\":1}],\"deviceId\":\"lfklio59\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1,\"protocol\":3},\"device_2\":{\"sensorList\":[{\"registerByteNum\":4,\"identifier\":\"WaterConsumption\",\"rFunctionCode\":3,\"registerAddress\":0,\"slaveAddress\":5,\"bigLittleFormat\":1,\"precise\":2,\"dataType\":1},{\"registerByteNum\":1,\"identifier\":\"WaterOutletSwitch\",\"rFunctionCode\":1,\"registerAddress\":0,\"slaveAddress\":5,\"bigLittleFormat\":1,\"precise\":0,\"dataType\":1}],\"commandList\":[{\"registerByteNum\":1,\"identifier\":\"WaterOutletSwitch\",\"registerAddress\":0,\"slaveAddress\":5,\"bigLittleFormat\":1,\"wFunctionCode\":5,\"dataType\":1}],\"deviceId\":\"tncecx2m\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1,\"protocol\":3},\"nodeId\":\"2A73\",\"RFFrequency\":1,\"SignalBw\":9,\"SpreadingFactor\":7,\"ErrorCoding\":1,\"baudrate\":9600,\"dataBit\":8,\"stopBit\":1,\"checkBit\":1},\"pollTime\":1000,\"port\":1883,\"power\":22,\"preambleLen\":0,\"version645\":1}";
  53. write_file("lora_json.txt",lora_test_json,strlen(lora_test_json));
  54. myfree(SRAMEX,lora_test_json);
  55. */
  56. //ucos初始化
  57. OSInit();
  58. OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);
  59. OSStart();
  60. /* Infinite loop */
  61. while (1)
  62. {
  63. }
  64. }
  65. void start_task(void *pdata)
  66. {
  67. OS_CPU_SR cpu_sr;
  68. pdata = pdata ;
  69. OSStatInit(); //初始化统计任务
  70. OS_ENTER_CRITICAL(); //关中断
  71. #if LWIP_DHCP
  72. lwip_comm_dhcp_creat(); //创建DHCP任务
  73. OSTimeDlyHMSM(0,0,2,500);
  74. #endif
  75. OSTaskCreate(led_task,(void*)0,(OS_STK*)&LED_TASK_STK[LED_STK_SIZE-1],LED_TASK_PRIO);//创建LED任务
  76. 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任务
  77. OSTaskCreate(data_task,(void*)0,(OS_STK*)&DATA_TASK_STK[DATA_STK_SIZE-1],DATA_TASK_PRIO);
  78. OSTaskSuspend(OS_PRIO_SELF); //挂起start_task任务
  79. OS_EXIT_CRITICAL(); //开中断
  80. }
  81. //测试任务
  82. void led_task(void *pdata)
  83. {
  84. OS_CPU_SR cpu_sr;
  85. pdata = pdata ;
  86. while(1)
  87. {
  88. LED(ON);
  89. OSTimeDlyHMSM(0,0,0,500);
  90. LED(OFF);
  91. OSTimeDlyHMSM(0,0,0,500);
  92. }
  93. }
  94. void net_status_led_task(void *pdata)
  95. {
  96. OS_CPU_SR cpu_sr;
  97. pdata = pdata ;
  98. while(1)
  99. {
  100. NET_STATUS_LED(ON);
  101. OSTimeDlyHMSM(0,0,0,500);
  102. NET_STATUS_LED(OFF);
  103. OSTimeDlyHMSM(0,0,0,500);
  104. }
  105. }
  106. void bsp_Idle(void)
  107. {
  108. /* --- 喂狗 */
  109. /* --- 让CPU进入休眠,由Systick定时中断唤醒或者其他中断唤醒 */
  110. }
  111. /**
  112. * @brief 配置嵌套向量中断控制器NVIC分组
  113. * @param 无
  114. * @retval 无
  115. */
  116. void NVIC_Configuration(void)
  117. {
  118. NVIC_InitTypeDef NVIC_InitStructure;
  119. /* 嵌套向量中断控制器组选择 */
  120. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  121. }