app_main.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. /*********************************************************************
  29. * GLOBAL TYPEDEFS
  30. */
  31. __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
  32. uint8_t MacAddr[6] = {0};
  33. /* Used for app judgment file effectiveness */
  34. const uint32_t Address = 0xFFFFFFFF;
  35. __attribute__((aligned(4))) uint32_t Image_Flag __attribute__((section(".ImageFlag"))) = (uint32_t)&Address;
  36. /*********************************************************************
  37. * @fn Main_Circulation
  38. *
  39. * @brief Main loop
  40. *
  41. * @return none
  42. */
  43. __attribute__((section(".highcode")))
  44. __attribute__((noinline))
  45. void Main_Circulation(void)
  46. {
  47. while(1)
  48. {
  49. IWDG_ReloadCounter(); //Feed dog
  50. TMOS_SystemProcess();
  51. }
  52. }
  53. static void func_init(void)
  54. {
  55. set_download_ble_data_func(download_ble_data_callback);
  56. set_download_ble_file_func(download_ble_file_callback);
  57. set_upload_ble_data_func(ble_data_send);
  58. set_ble_connect_evtfunc(ble_connect_act);
  59. }
  60. static void task_init(void)
  61. {
  62. vUser_server_init();
  63. vBle_action_init();
  64. vUser_can_init();
  65. vDipsw_init();
  66. led_task_init();
  67. elect_task_init();
  68. user_charge_init();
  69. adc_init();
  70. led_task_init();
  71. // ble_action_init();
  72. vUser_nfc_init();
  73. }
  74. static void task_start(void)
  75. {
  76. dipsw_task_start();
  77. adc_task_start();
  78. led_task_start();
  79. elect_task_start();
  80. vUser_nfc_task_start();
  81. vUser_server_task_start();
  82. }
  83. /*********************************************************************
  84. * @fn main
  85. *
  86. * @brief Main function
  87. *
  88. * @return none
  89. */
  90. int main(void)
  91. {
  92. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先级分组4,所有位均用于抢占优先级
  93. SystemCoreClockUpdate();
  94. Delay_Init();
  95. #ifdef DEBUG
  96. USART_Printf_Init(115200);
  97. #endif
  98. PRINT("%s\nSystemClk:%d\r\n", VER_LIB, SystemCoreClock);
  99. PRINT( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
  100. rng_init(0);
  101. user_config_init();
  102. func_init();
  103. WCHBLE_Init();
  104. HAL_Init();
  105. GAPRole_PeripheralInit();
  106. Peripheral_Init();
  107. task_init();
  108. task_start();
  109. set_led_indication(DEV_LED, RED_LED, LED_WORK_BREATHE, 5000, 2500, 0, 500, 500);
  110. Main_Circulation();
  111. }
  112. /******************************** endfile @ main ******************************/