#include "common.h" #include "stm32wlxx_hal.h" #include "string.h" #include #include #include "main.h" extern I2C_HandleTypeDef hi2c2; extern UART_HandleTypeDef huart1; uint8_t GTXBuffer[512]; int8_t SensorAPI_I2Cx_Read(uint8_t slave_address7, uint8_t subaddress, uint8_t *pBuffer, uint16_t ReadNumbr) { uint16_t DevAddress = slave_address7 << 1; // send register address HAL_I2C_Master_Transmit(&I2C_HANDLE, DevAddress, &subaddress, 1, BUS_TIMEOUT); HAL_I2C_Master_Receive(&I2C_HANDLE, DevAddress, pBuffer, ReadNumbr, BUS_TIMEOUT); return 0; } int8_t SensorAPI_I2Cx_Write(uint8_t slave_address7, uint8_t subaddress, uint8_t *pBuffer, uint16_t WriteNumbr) { uint16_t DevAddress = slave_address7 << 1; GTXBuffer[0] = subaddress; memcpy(>XBuffer[1], pBuffer, WriteNumbr); // send register address HAL_I2C_Master_Transmit(&I2C_HANDLE, DevAddress, GTXBuffer, WriteNumbr+1, BUS_TIMEOUT); return 0; } void DelayUs(uint32_t Delay) { uint32_t i; while(Delay--) { for(i = 0; i < 84; i++) { ; } } } void UART_Printf(uint8_t* buff, uint16_t size) { //HAL_UART_Transmit_DMA(&huart2, buff, size); if (HAL_UART_Transmit(&UART_HANDLE, buff, size, BUS_TIMEOUT) != HAL_OK) { Error_Handler(); } } char chBuffer[512]; #if 1 void PDEBUG(char *format, ...) { #if defined(DEBUG_EN) va_list ap; //char timestamp[16]; va_start(ap, format); vsnprintf(chBuffer, sizeof(chBuffer), format, ap); //sprintf(timestamp, "[%d]", xTaskGetTickCount()); //xTaskGetTickCountFromISR() //Printf((uint8_t *)timestamp, strlen(timestamp)); UART_Printf((uint8_t *)chBuffer,strlen(chBuffer)); va_end(ap); #endif } #else void PDEBUG(char *format, ...) { #if defined(DEBUG_EN) va_list ap; //char timestamp[16]; va_start(ap, format); vsnprintf(GTXBuffer, sizeof(GTXBuffer), format, ap); //sprintf(timestamp, "[%d]", xTaskGetTickCount()); //xTaskGetTickCountFromISR() //Printf((uint8_t *)timestamp, strlen(timestamp)); UART_Printf((uint8_t *)GTXBuffer,strlen(GTXBuffer)); va_end(ap); #endif } #endif