app_main.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /********************************** (C) COPYRIGHT *******************************
  2. * File Name : main.c
  3. * Author : WCH
  4. * Version : V1.1
  5. * Date : 2020/08/06
  6. * Description : Peripheral slave application main function and task system initialization
  7. *********************************************************************************
  8. * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
  9. * Attention: This software (modified or not) and binary are used for
  10. * microcontroller manufactured by Nanjing Qinheng Microelectronics.
  11. *******************************************************************************/
  12. /******************************************************************************/
  13. /* Header file contains */
  14. #include "define.h"
  15. #include "gattprofile.h"
  16. #include "peripheral.h"
  17. #include "user_config.h"
  18. #include "tools.h"
  19. #include "user_led.h"
  20. #include "dip_sw.h"
  21. #include "user_adc.h"
  22. #include "ble_action.h"
  23. #include "user_elect.h"
  24. #include "user_charge.h"
  25. #include "user_nfc.h"
  26. #include "user_can.h"
  27. #include "user_server.h"
  28. #include "user_ws2812b.h"
  29. #include "user_fan.h"
  30. #include "elect_sw.h"
  31. /*********************************************************************
  32. * GLOBAL TYPEDEFS
  33. */
  34. __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
  35. uint8_t MacAddr[6] = {0};
  36. /* Used for app judgment file effectiveness */
  37. const uint32_t Address = 0xFFFFFFFF;
  38. __attribute__((aligned(4))) uint32_t Image_Flag __attribute__((section(".ImageFlag"))) = (uint32_t)&Address;
  39. /*********************************************************************
  40. * @fn Main_Circulation
  41. *
  42. * @brief Main loop
  43. *
  44. * @return none
  45. */
  46. __attribute__((section(".highcode")))
  47. __attribute__((noinline))
  48. void Main_Circulation(void)
  49. {
  50. while(1)
  51. {
  52. IWDG_ReloadCounter(); //Feed dog
  53. TMOS_SystemProcess();
  54. }
  55. }
  56. static void func_init(void)
  57. {
  58. set_download_ble_data_func(download_ble_data_callback);
  59. set_download_ble_file_func(download_ble_file_callback);
  60. set_upload_ble_data_func(ble_data_send);
  61. set_ble_connect_evtfunc(ble_connect_act);
  62. }
  63. static void task_init(void)
  64. {
  65. vUser_server_init();
  66. vBle_action_init();
  67. vUser_can_init();
  68. vDipsw_init();
  69. vElectsw_init();
  70. vUser_ws2812b_init(USER_WS2812B_COUNT_DEFAULT);
  71. led_task_init();
  72. elect_task_init();
  73. user_charge_init();
  74. adc_init();
  75. fan_init();
  76. led_task_init();
  77. // ble_action_init();
  78. vUser_nfc_init();
  79. }
  80. static void task_start(void)
  81. {
  82. dipsw_task_start();
  83. adc_task_start();
  84. vUser_ws2812b_task_start();
  85. led_task_start();
  86. elect_task_start();
  87. electsw_task_start();
  88. vUser_nfc_task_start();
  89. vUser_server_task_start();
  90. }
  91. /*********************************************************************
  92. * @fn main
  93. *
  94. * @brief Main function
  95. *
  96. * @return none
  97. */
  98. int main(void)
  99. {
  100. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先级分组4,所有位均用于抢占优先级
  101. SystemCoreClockUpdate();
  102. Delay_Init();
  103. #ifdef DEBUG
  104. USART_Printf_Init(115200);
  105. #endif
  106. PRINT("%s\nSystemClk:%d\r\n", VER_LIB, SystemCoreClock);
  107. PRINT( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
  108. rng_init(0);
  109. user_config_init();
  110. func_init();
  111. WCHBLE_Init();
  112. HAL_Init();
  113. GAPRole_PeripheralInit();
  114. Peripheral_Init();
  115. task_init();
  116. task_start();
  117. set_led_indication(DEV_LED, WS2812B_NORMAL_RGB, LED_WORK_INVERT, 5000, 2500, 0);
  118. Main_Circulation();
  119. }
  120. /******************************** endfile @ main ******************************/