BLE_DCF_TYQ_CH592F/APP/peripheral_main.c

238 lines
5.4 KiB
C
Raw Normal View History

2024-12-02 16:26:55 +08:00
/********************************** (C) COPYRIGHT *******************************
* File Name : main.c
* Author : WCH
* Version : V1.1
* Date : 2020/08/06
2024-12-13 13:22:31 +08:00
* Description :
2024-12-02 16:26:55 +08:00
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
2024-12-02 17:03:41 +08:00
* Attention: This software (modified or not) and binary are used for
2024-12-02 16:26:55 +08:00
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#include "CONFIG.h"
#include "HAL.h"
#include "gattprofile.h"
#include "peripheral.h"
#include "bsp_adc.h"
2024-12-09 11:41:44 +08:00
#include "bsp_key.h"
#include "bsp_beep_led_emv.h"
2024-12-12 15:49:10 +08:00
#include "log.h"
#include "bsp_uart.h"
2024-12-13 18:14:02 +08:00
#include "bsp_i2c.h"
2024-12-15 14:30:06 +08:00
#include "bsp_iwdg.h"
#include "bsp_flash.h"
2024-12-15 14:30:06 +08:00
2024-12-12 15:49:10 +08:00
#undef LOG_ENABLE
#define LOG_ENABLE 1
2024-12-13 13:22:31 +08:00
#undef LOG_TAG
#define LOG_TAG "main"
2024-12-14 13:31:23 +08:00
__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
2024-12-02 16:26:55 +08:00
void app_task_handler(TeAppEvtType app_evt_type)
{
switch(app_evt_type)
{
case kKeyShort:{
2024-12-14 17:26:28 +08:00
logDebug("button short press\r\n");
break;
}
case kKeyLong:
2024-12-14 17:26:28 +08:00
logDebug("button long press\r\n");
break;
case kKeyRelease:
2024-12-14 17:26:28 +08:00
// BSP_KEY_EnterLowpower();
DelayMs(10);
BSP_RequestSleep();
logDebug("gpio relase;BSP_RequestSleep\r\n");
break;
default:
break;
}
}
2024-12-02 16:26:55 +08:00
/*********************************************************************
* @fn Main_Circulation
*
2024-12-13 13:22:31 +08:00
* @brief
2024-12-02 16:26:55 +08:00
*
* @return none
*/
__HIGH_CODE
__attribute__((noinline)) void Main_Circulation()
2024-12-02 16:26:55 +08:00
{
2024-12-02 17:34:56 +08:00
while (1)
2024-12-02 16:26:55 +08:00
{
TMOS_SystemProcess();
2024-12-14 16:00:58 +08:00
KEY_ProcessLoop();
BSP_UART1_TxLoop();
2024-12-14 16:00:58 +08:00
#if 0
2024-12-13 18:14:02 +08:00
if (GPIOB_ReadPortPin(GPIO_Pin_7) == 0)
2024-12-02 17:34:56 +08:00
{
// 12V_EN
2024-12-09 11:41:44 +08:00
BOOST_EN;
2024-12-12 19:38:57 +08:00
logDebug("BOOST_EN\n");
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
// LED_R
LED_R_ON;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_R_ON\n");
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
LED_ALL_OFF_DEINIT;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_ALL_OFF_DEINIT\n");
2024-12-02 17:34:56 +08:00
2024-12-10 15:39:32 +08:00
// BEEP
BEEP_ON;
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("BEEP_ON\n");
2024-12-10 15:39:32 +08:00
BEEP_OFF_DEINIT;
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("BEEP_OFF_DEINIT\n");
2024-12-10 15:39:32 +08:00
2024-12-09 11:41:44 +08:00
// LED_G
LED_G_ON;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_G_ON\n");
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
LED_ALL_OFF_DEINIT;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_ALL_OFF_DEINIT\n");
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
// LED_Y
LED_Y_ON;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_Y_ON\n");
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
LED_ALL_OFF_DEINIT;
2024-12-08 11:29:48 +08:00
DelayMs(1000);
2024-12-12 19:38:57 +08:00
logDebug("LED_ALL_OFF_DEINIT\n");
2024-12-02 17:34:56 +08:00
2024-12-12 19:38:57 +08:00
logDebug("Delay 6s\n");
2024-12-09 11:41:44 +08:00
// EMV_CHARGE
EMV_CHARGE_EN;
2024-12-12 19:38:57 +08:00
logDebug("EMV_CHARGE_EN\n");
2024-12-09 11:41:44 +08:00
2024-12-10 15:39:32 +08:00
DelayMs(1000);
2024-12-09 11:41:44 +08:00
2024-12-09 16:13:41 +08:00
EMV_CHARGE_OFF_DEINIT;
2024-12-12 19:38:57 +08:00
logDebug("EMV_CHARGE_OFF_DEINIT 500 ms\n");
2024-12-02 17:34:56 +08:00
// EMV_CTRL
2024-12-09 11:41:44 +08:00
EMV_ON;
2024-12-12 19:38:57 +08:00
logDebug("EMV_ON\n");
2024-12-09 16:13:41 +08:00
DelayMs(100);
2024-12-02 17:34:56 +08:00
2024-12-09 11:41:44 +08:00
BOOST_OFF_DEINIT;
BEEP_OFF_DEINIT;
LED_ALL_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
2024-12-02 17:34:56 +08:00
}
2024-12-14 16:00:58 +08:00
#endif
2024-12-02 16:26:55 +08:00
}
}
2024-12-15 14:30:06 +08:00
// https://www.cnblogs.com/gscw/p/18530905
// 在连接间隔和广播间隔到来时,会进入该回调,可以在回调函数加上其他执行逻辑代码,如喂狗等。
2024-12-13 18:14:02 +08:00
void BLE_AdvertiseEventCB(uint32_t timeUs)
{
2024-12-15 14:30:06 +08:00
// FEED_IWDG();
2024-12-14 18:40:24 +08:00
logDebug("BLE_AdvertiseEventCB");
2024-12-13 18:14:02 +08:00
}
2024-12-15 14:30:06 +08:00
void BLE_ConnectEventCB(uint32_t timeUs)
{
// FEED_IWDG();
logDebug("BLE_ConnectEventCB");
}
2024-12-02 16:26:55 +08:00
/*********************************************************************
* @fn main
*
2024-12-13 13:22:31 +08:00
* @brief
2024-12-02 16:26:55 +08:00
*
* @return none
*/
int main(void)
{
2024-12-02 17:34:56 +08:00
#if (defined(DCDC_ENABLE)) && (DCDC_ENABLE == TRUE)
2024-12-02 16:26:55 +08:00
PWR_DCDCCfg(ENABLE);
#endif
SetSysClock(CLK_SOURCE_PLL_60MHz);
2024-12-08 11:29:48 +08:00
2024-12-02 17:34:56 +08:00
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
2024-12-08 11:29:48 +08:00
GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
#endif
#ifdef DEBUG
2024-12-12 15:49:10 +08:00
// GPIOA_SetBits(bTXD1);
// GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
// UART1_DefInit();
// 改成1500000波特率了
2024-12-13 13:22:31 +08:00
BSP_UART1_Init(1500000);
2024-12-12 15:49:10 +08:00
logDebug("Start @ChipID=%02X\n", R8_CHIP_ID);
2024-12-13 19:04:18 +08:00
logError("中文测试 %2.2f", 123.456);
2024-12-02 16:26:55 +08:00
#endif
2024-12-02 17:03:41 +08:00
2024-12-14 17:26:28 +08:00
DelayMs(1000 * 3);
2024-12-02 17:03:41 +08:00
2024-12-09 11:41:44 +08:00
BOOST_OFF_DEINIT;
BEEP_OFF_DEINIT;
LED_ALL_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
2024-12-02 17:03:41 +08:00
2024-12-14 17:26:28 +08:00
BSP_ADC_Init();
2024-12-02 16:26:55 +08:00
CH59x_BLEInit();
2024-12-12 19:38:57 +08:00
logDebug("%s\n", VER_LIB);
2024-12-13 18:14:02 +08:00
uint8_t MacAddr[6];
GetMACAddress(MacAddr);
// 手机APP显示是倒序的[5-0],不是[0-5]
2024-12-13 18:14:02 +08:00
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", MacAddr[0], MacAddr[1], MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]);
2024-12-15 19:04:05 +08:00
// extern void Peripheral_SetMacName(void);
// Peripheral_SetMacName();
// while(1)
// {
// DelayMs(1000);
// }
2024-12-02 16:26:55 +08:00
HAL_Init();
GAPRole_PeripheralInit();
Peripheral_Init();
2024-12-15 14:30:06 +08:00
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
// LL_ConnectEventRegister(BLE_ConnectEventCB);
2024-12-13 18:14:02 +08:00
BSP_FLASH_Init();
2024-12-14 17:26:28 +08:00
DelayMs(100);
GXHTC3C_Init();
2024-12-13 18:14:02 +08:00
BSP_KEY_Init(app_task_handler);
2024-12-13 18:14:02 +08:00
2024-12-15 14:30:06 +08:00
// IWDG_Init(1500);
2024-12-02 16:26:55 +08:00
Main_Circulation();
}
/******************************** endfile @ main ******************************/