app_main.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. vUser_can_init();
  64. vDipsw_init();
  65. led_task_init();
  66. elect_task_init();
  67. user_charge_init();
  68. adc_init();
  69. led_task_init();
  70. // ble_action_init();
  71. vUser_nfc_init();
  72. }
  73. static void task_start(void)
  74. {
  75. dipsw_task_start();
  76. adc_task_start();
  77. led_task_start();
  78. elect_task_start();
  79. vUser_nfc_task_start();
  80. }
  81. /*********************************************************************
  82. * @fn main
  83. *
  84. * @brief Main function
  85. *
  86. * @return none
  87. */
  88. int main(void)
  89. {
  90. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先级分组4,所有位均用于抢占优先级
  91. SystemCoreClockUpdate();
  92. Delay_Init();
  93. #ifdef DEBUG
  94. USART_Printf_Init(115200);
  95. #endif
  96. PRINT("%s\nSystemClk:%d\r\n", VER_LIB, SystemCoreClock);
  97. PRINT( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
  98. rng_init(0);
  99. user_config_init();
  100. func_init();
  101. WCHBLE_Init();
  102. HAL_Init();
  103. GAPRole_PeripheralInit();
  104. Peripheral_Init();
  105. task_init();
  106. task_start();
  107. set_led_indication(DEV_LED, RED_LED, LED_WORK_BREATHE, 5000, 2500, 0, 500, 500);
  108. Main_Circulation();
  109. }
  110. /******************************** endfile @ main ******************************/