app_main.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 "dip_sw.h"
  20. #include "ble_action.h"
  21. #include "user_elect.h"
  22. #include "elect_sw.h"
  23. #include "user_nfc.h"
  24. #include "user_can.h"
  25. #include "user_server.h"
  26. #include "user_ws2812b.h"
  27. #include "user_led.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. vElectsw_init();
  67. elect_task_init();
  68. vUser_nfc_init();
  69. vUser_ws2812b_init(USER_WS2812B_COUNT_DEFAULT);
  70. led_task_init();
  71. }
  72. static void task_start(void)
  73. {
  74. vUser_ws2812b_task_start();
  75. dipsw_task_start();
  76. elect_task_start();
  77. electsw_task_start();
  78. vUser_nfc_task_start();
  79. vUser_server_task_start();
  80. led_task_start();
  81. }
  82. /*********************************************************************
  83. * @fn main
  84. *
  85. * @brief Main function
  86. *
  87. * @return none
  88. */
  89. int main(void)
  90. {
  91. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先级分组4,所有位均用于抢占优先级
  92. SystemCoreClockUpdate();
  93. Delay_Init();
  94. #ifdef DEBUG
  95. USART_Printf_Init(115200);
  96. #endif
  97. PRINT("%s\nSystemClk:%d\r\n", VER_LIB, SystemCoreClock);
  98. PRINT( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
  99. rng_init(0);
  100. user_config_init();
  101. func_init();
  102. WCHBLE_Init();
  103. HAL_Init();
  104. GAPRole_PeripheralInit();
  105. Peripheral_Init();
  106. task_init();
  107. task_start();
  108. // set_led_indication(DEV_LED, WS2812B_NORMAL_RGB, LED_WORK_INVERT, 5000, 2500, 0);
  109. Main_Circulation();
  110. }
  111. /******************************** endfile @ main ******************************/