105 lines
3.0 KiB
C
105 lines
3.0 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
|
* File Name : main.c
|
|
* Author : WCH
|
|
* Version : V1.1
|
|
* Date : 2019/11/05
|
|
* Description : Peripheral slave application main function and task system initialization
|
|
*********************************************************************************
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
|
* Attention: This software (modified or not) and binary are used for
|
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
|
*******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
/* Header file contains */
|
|
#include "CONFIG.h"
|
|
#include "HAL.h"
|
|
#include "GATTprofile.h"
|
|
#include "Peripheral.h"
|
|
#include "OTA.h"
|
|
#include "OTAprofile.h"
|
|
|
|
/* Record the current image */
|
|
unsigned char CurrImageFlag = 0xff;
|
|
|
|
/*********************************************************************
|
|
* GLOBAL TYPEDEFS
|
|
*/
|
|
__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
|
|
|
|
#if(defined(BLE_MAC)) && (BLE_MAC == TRUE)
|
|
const uint8_t MacAddr[6] =
|
|
{0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02};
|
|
#endif
|
|
|
|
/* Used for app judgment file effectiveness */
|
|
const uint32_t Address = 0xFFFFFFFF;
|
|
|
|
__attribute__((aligned(4))) uint32_t Image_Flag __attribute__((section(".ImageFlag"))) = (uint32_t)&Address;
|
|
|
|
/* Note: The operation of Flash after the program is upgraded must be performed first without
|
|
* turning on any interruption to prevent operation interruption and failure */
|
|
/*********************************************************************
|
|
* @fn ReadImageFlag
|
|
*
|
|
* @brief Read the iMage logo of the current program. If the DataFlash is empty,
|
|
* it will be ImageA by default
|
|
*
|
|
* @return none
|
|
*/
|
|
void ReadImageFlag(void)
|
|
{
|
|
OTADataFlashInfo_t p_image_flash;
|
|
|
|
FLASH_read(OTA_DATAFLASH_ADD, (uint8_t*)&p_image_flash, 4);
|
|
CurrImageFlag = p_image_flash.ImageFlag;
|
|
|
|
/* The program is executed for the first time, or it has not been updated,
|
|
* and the DataFlash will be erased after the subsequent update. */
|
|
if((CurrImageFlag != IMAGE_A_FLAG) && (CurrImageFlag != IMAGE_B_FLAG))
|
|
{
|
|
CurrImageFlag = IMAGE_A_FLAG;
|
|
}
|
|
}
|
|
|
|
/*********************************************************************
|
|
* @fn Main_Circulation
|
|
*
|
|
* @brief Main loop
|
|
*
|
|
* @return none
|
|
*/
|
|
__attribute__((section(".highcode")))
|
|
__attribute__((noinline))
|
|
void Main_Circulation(void)
|
|
{
|
|
while(1)
|
|
{
|
|
TMOS_SystemProcess();
|
|
}
|
|
}
|
|
|
|
/*********************************************************************
|
|
* @fn main
|
|
*
|
|
* @brief Main function
|
|
*
|
|
* @return none
|
|
*/
|
|
int main(void)
|
|
{
|
|
SystemCoreClockUpdate();
|
|
Delay_Init();
|
|
#ifdef DEBUG
|
|
USART_Printf_Init( 115200 );
|
|
#endif
|
|
PRINT("%s\n", VER_LIB);
|
|
WCHBLE_Init();
|
|
HAL_Init();
|
|
GAPRole_PeripheralInit();
|
|
Peripheral_Init();
|
|
Main_Circulation();
|
|
}
|
|
|
|
/******************************** endfile @ main ******************************/
|