app_main.c 3.3 KB

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