01_SDK/nimble/samples/bluetooth/ble_central_periph_ota/src/app.c
@@ -10,6 +10,82 @@
 */
#include "app.h"
#include "app_log.h"
#define UART_RECV_BUF_SIZE      128
#define UART_SEND_BUF_SIZE      128
#define UART_TEST_SIZE          8
uint8_t revDataBuf[UART_RECV_BUF_SIZE];
uint8_t sendDataBuf[UART_SEND_BUF_SIZE];
uint8_t rx_changdu;
extern uint8_t shengji_flag;
extern uint8_t only_one;
void app_uart_rx_dma_callback(UART_Cb_Flag_Opt flag, uint8_t *pOutPtr, uint16_t size)
{
//    printf("UART Rx with DMA Done, recv data size = %d.\n", size);
    // Copy data from UART Rx buffer to Tx buffer
//    memcpy(sendDataBuf, pOutPtr, size);
    memcpy(revDataBuf, pOutPtr, size);
    if(revDataBuf[0]==0x55&&revDataBuf[1]==0xAA&&revDataBuf[2]==0x75
    &&revDataBuf[3]==0x70&&revDataBuf[4]==0x64&&revDataBuf[5]==0x61
    &&revDataBuf[6]==0x74&&revDataBuf[7]==0x65)
    {
//        HAL_UART_SendData_DMA(&UART0_OBJ, revDataBuf, UART_TEST_SIZE);
        shengji_flag=1;
        only_one=1;
    }
    else
    {
    }
//    HAL_Status sts = HAL_UART_SendData_DMA(&UART0_OBJ, sendDataBuf, UART_TEST_SIZE);
//    if (sts != HAL_OK)
//    {
//        printf("Error: HAL Uart Send Data with DMA Fail, error code = %d!\n", sts);
//    }
        memset(revDataBuf, 0, 128);
        HAL_Status sts = HAL_UART_ReceiveData_DMA(&UART0_OBJ, revDataBuf, UART_TEST_SIZE);
        if (sts != HAL_OK)
        {
    //        printf("Error: HAL Uart Receive Data with DMA Fail, error code = %d!\n", sts);
        }
}
void app_uart_tx_dma_callback(UART_Cb_Flag_Opt flag, uint8_t *pOutPtr, uint16_t size)
{
//    printf("UART Tx with DMA Done, sent data size = %d.\n", size);
//    // Start UART Rx with DMA
//    HAL_Status sts = HAL_UART_ReceiveData_DMA(&UART0_OBJ, revDataBuf, UART_TEST_SIZE);
//    if (sts != HAL_OK)
//    {
////        printf("Error: HAL Uart Receive Data with DMA Fail, error code = %d!\n", sts);
//    }
}
static void uart0_init(void)
{
    SYS_SET_MFP(P1, 6, UART0_TX);
    SYS_SET_MFP(P1, 7, UART0_RX);
    GPIO_EnableDigitalPath(P1, BIT7);
    UART0_OBJ.initObj.baudRate = 921600;
    UART0_OBJ.initObj.format = HAL_UART_FMT_8_N_1;
    if (HAL_UART_Init(&UART0_OBJ) != HAL_OK) {
        printf("Error: HAL Uart Init Fail!\n");
    }
    HAL_DMA_Init();
    if (HAL_UART_Init_DMA(&UART0_OBJ, HAL_UART_DMA_TX, app_uart_tx_dma_callback) != HAL_OK) {
        printf("Error: HAL Uart Tx DMA Init Fail!\n");
    }
    if (HAL_UART_Init_DMA(&UART0_OBJ, HAL_UART_DMA_RX, app_uart_rx_dma_callback) != HAL_OK) {
        printf("Error: HAL Uart Rx DMA Init Fail!\n");
    }
}
/**
 *******************************************************************************
@@ -19,7 +95,15 @@
void setup(void)
{
   APP_LOG_INFO("app started\n");
    // Init peripheral module
    uart0_init();
    // Start UART Rx with DMA
    HAL_Status sts = HAL_UART_ReceiveData_DMA(&UART0_OBJ, revDataBuf, UART_TEST_SIZE);
    if (sts != HAL_OK)
    {
        printf("Error: HAL Uart Receive Data with DMA Fail, error code = %d!\n", sts);
    }
   /* ble stack initialization. */
   app_ble_init();