#ifndef __INA219_H
#define __INA219_H
#include "config.h"
// I2C Address Options
#define INA219_I2C_ADDRESS_CONF_0 (u8)(0x40 << 1) // A0 = GND, A1 = GND
#define INA219_I2C_ADDRESS_CONF_1 (u8)(0x41 << 1) // A0 = VS+, A1 = GND
#define INA219_I2C_ADDRESS_CONF_2 (u8)(0x42 << 1) // A0 = SDA, A1 = GND
#define INA219_I2C_ADDRESS_CONF_3 (u8)(0x43 << 1) // A0 = SCL, A1 = GND
#define INA219_I2C_ADDRESS_CONF_4 (u8)(0x44 << 1) // A0 = GND, A1 = VS+
#define INA219_I2C_ADDRESS_CONF_5 (u8)(0x45 << 1) // A0 = VS+, A1 = VS+
#define INA219_I2C_ADDRESS_CONF_6 (u8)(0x46 << 1) // A0 = SDA, A1 = VS+
#define INA219_I2C_ADDRESS_CONF_7 (u8)(0x47 << 1) // A0 = SCL, A1 = VS+
#define INA219_I2C_ADDRESS_CONF_8 (u8)(0x48 << 1) // A0 = GND, A1 = SDA
#define INA219_I2C_ADDRESS_CONF_9 (u8)(0x49 << 1) // A0 = VS+, A1 = SDA
#define INA219_I2C_ADDRESS_CONF_A (u8)(0x4A << 1) // A0 = SDA, A1 = SDA
#define INA219_I2C_ADDRESS_CONF_B (u8)(0x4B << 1) // A0 = SCL, A1 = SDA
#define INA219_I2C_ADDRESS_CONF_C (u8)(0x4C << 1) // A0 = GND, A1 = SCL
#define INA219_I2C_ADDRESS_CONF_D (u8)(0x4D << 1) // A0 = VS+, A1 = SCL
#define INA219_I2C_ADDRESS_CONF_E (u8)(0x4E << 1) // A0 = SDA, A1 = SCL
#define INA219_I2C_ADDRESS_CONF_F (u8)(0x4F << 1) // A0 = SCL, A1 = SCL
#define INA219_I2C_ADDRESS INA219_I2C_ADDRESS_CONF_0
/*----------------------------------------------------------------------------*/
// Register Addresses
#define INA219_REG_CONFIG (u8)(0x00) // CONFIG REGISTER (R/W)
#define INA219_REG_SHUNTVOLTAGE (u8)(0x01) // SHUNT VOLTAGE REGISTER (R)
#define INA219_REG_BUSVOLTAGE (u8)(0x02) // BUS VOLTAGE REGISTER (R)
#define INA219_REG_POWER (u8)(0x03) // POWER REGISTER (R)
#define INA219_REG_CURRENT (u8)(0x04) // CURRENT REGISTER (R)
#define INA219_REG_CALIBRATION (u8)(0x05) // CALIBRATION REGISTER (R/W)
/*----------------------------------------------------------------------------*/
// Macros for assigning config bits
#define INA219_CFGB_RESET(x) (u16)((x & 0x01) << 15) // Reset Bit
#define INA219_CFGB_BUSV_RANGE(x) (u16)((x & 0x01) << 13) // Bus Voltage Range
#define INA219_CFGB_PGA_RANGE(x) (u16)((x & 0x03) << 11) // Shunt Voltage Range
#define INA219_CFGB_BADC_RES_AVG(x) (u16)((x & 0x0F) << 7) // Bus ADC Resolution/Averaging
#define INA219_CFGB_SADC_RES_AVG(x) (u16)((x & 0x0F) << 3) // Shunt ADC Resolution/Averaging
#define INA219_CFGB_MODE(x) (u16) (x & 0x07) // Operating Mode
/*----------------------------------------------------------------------------*/
// Configuration Register
#define INA219_CFG_RESET INA219_CFGB_RESET(1) // Reset Bit
#define INA219_CFG_BVOLT_RANGE_MASK INA219_CFGB_BUSV_RANGE(1) // Bus Voltage Range Mask
#define INA219_CFG_BVOLT_RANGE_16V INA219_CFGB_BUSV_RANGE(0) // 0-16V Range
#define INA219_CFG_BVOLT_RANGE_32V INA219_CFGB_BUSV_RANGE(1) // 0-32V Range (default)
#define INA219_CFG_SVOLT_RANGE_MASK INA219_CFGB_PGA_RANGE(3) // Shunt Voltage Range Mask
#define INA219_CFG_SVOLT_RANGE_40MV INA219_CFGB_PGA_RANGE(0) // Gain 1, 40mV Range
#define INA219_CFG_SVOLT_RANGE_80MV INA219_CFGB_PGA_RANGE(1) // Gain 2, 80mV Range
#define INA219_CFG_SVOLT_RANGE_160MV INA219_CFGB_PGA_RANGE(2) // Gain 4, 160mV Range
#define INA219_CFG_SVOLT_RANGE_320MV INA219_CFGB_PGA_RANGE(3) // Gain 8, 320mV Range (default)
#define INA219_CFG_BADCRES_MASK INA219_CFGB_BADC_RES_AVG(15) // Bus ADC Resolution and Averaging Mask
#define INA219_CFG_BADCRES_9BIT_1S_84US INA219_CFGB_BADC_RES_AVG(0) // 1 x 9-bit Bus sample
#define INA219_CFG_BADCRES_10BIT_1S_148US INA219_CFGB_BADC_RES_AVG(1) // 1 x 10-bit Bus sample
#define INA219_CFG_BADCRES_11BIT_1S_276US INA219_CFGB_BADC_RES_AVG(2) // 1 x 11-bit Bus sample
#define INA219_CFG_BADCRES_12BIT_1S_532US INA219_CFGB_BADC_RES_AVG(3) // 1 x 12-bit Bus sample (default)
#define INA219_CFG_BADCRES_12BIT_2S_1MS INA219_CFGB_BADC_RES_AVG(9) // 2 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_4S_2MS INA219_CFGB_BADC_RES_AVG(10) // 4 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_8S_4MS INA219_CFGB_BADC_RES_AVG(11) // 8 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_16S_8MS INA219_CFGB_BADC_RES_AVG(12) // 16 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_32S_17MS INA219_CFGB_BADC_RES_AVG(13) // 32 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_64S_34MS INA219_CFGB_BADC_RES_AVG(14) // 64 x 12-bit Bus samples averaged together
#define INA219_CFG_BADCRES_12BIT_128S_68MS INA219_CFGB_BADC_RES_AVG(15) // 128 x 12-bit Bus samples averaged together
#define INA219_CFG_SADCRES_MASK INA219_CFGB_SADC_RES_AVG(15) // Shunt ADC Resolution and Averaging Mask
#define INA219_CFG_SADCRES_9BIT_1S_84US INA219_CFGB_SADC_RES_AVG(0) // 1 x 9-bit Shunt sample
#define INA219_CFG_SADCRES_10BIT_1S_148US INA219_CFGB_SADC_RES_AVG(1) // 1 x 10-bit Shunt sample
#define INA219_CFG_SADCRES_11BIT_1S_276US INA219_CFGB_SADC_RES_AVG(2) // 1 x 11-bit Shunt sample
#define INA219_CFG_SADCRES_12BIT_1S_532US INA219_CFGB_SADC_RES_AVG(3) // 1 x 12-bit Shunt sample (default)
#define INA219_CFG_SADCRES_12BIT_2S_1MS INA219_CFGB_SADC_RES_AVG(9) // 2 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_4S_2MS INA219_CFGB_SADC_RES_AVG(10) // 4 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_8S_4MS INA219_CFGB_SADC_RES_AVG(11) // 8 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_16S_8MS INA219_CFGB_SADC_RES_AVG(12) // 16 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_32S_17MS INA219_CFGB_SADC_RES_AVG(13) // 32 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_64S_34MS INA219_CFGB_SADC_RES_AVG(14) // 64 x 12-bit Shunt samples averaged together
#define INA219_CFG_SADCRES_12BIT_128S_68MS INA219_CFGB_SADC_RES_AVG(15) // 128 x 12-bit Shunt samples averaged together
#define INA219_CFG_MODE_MASK INA219_CFGB_MODE(7) // Operating Mode Mask
#define INA219_CFG_MODE_POWERDOWN INA219_CFGB_MODE(0) // Power-Down
#define INA219_CFG_MODE_SVOLT_TRIGGERED INA219_CFGB_MODE(1) // Shunt Voltage, Triggered
#define INA219_CFG_MODE_BVOLT_TRIGGERED INA219_CFGB_MODE(2) // Bus Voltage, Triggered
#define INA219_CFG_MODE_SANDBVOLT_TRIGGERED INA219_CFGB_MODE(3) // Shunt and Bus, Triggered
#define INA219_CFG_MODE_ADCOFF INA219_CFGB_MODE(4) // ADC Off (disabled)
#define INA219_CFG_MODE_SVOLT_CONTINUOUS INA219_CFGB_MODE(5) // Shunt Voltage, Continuous
#define INA219_CFG_MODE_BVOLT_CONTINUOUS INA219_CFGB_MODE(6) // Bus Voltage, Continuous
#define INA219_CFG_MODE_SANDBVOLT_CONTINUOUS INA219_CFGB_MODE(7) // Shunt and Bus, Continuous (default)
/*----------------------------------------------------------------------------*/
// Bus Voltage Register
#define INA219_BVOLT_CNVR (u16)(0x0002) // Conversion Ready
#define INA219_BVOLT_OVF (u16)(0x0001) // Math Overflow Flag
struct ina219_value_t
{
int16 voltage;
int32 shunt;
int32 current;
int32 power;
};
extern struct ina219_value_t ina219_value;
extern void drv_ina219_init(void);
extern int16 ina219_GetBusVoltage_mV(void);
extern int32 ina219_GetShuntVoltage_uV(void);
extern int32 ina219_GetCurrent_uA(void);
extern int32 ina219_GetPower_mW(void);
extern void ina219_process(void);
#endif
#include "INA219.h"
#include "config.h"
#include "STC32G_Timer.h"
#include "STC32G_GPIO.h"
#include "STC32G_NVIC.h"
#include "STC32G_Exti.h"
#include "STC32G_I2C.h"
#include "STC32G_Delay.h"
#include "STC32G_Switch.h"
#if TCFG_DRV_INA219_SUPPORT
struct ina219_value_t ina219_value;
u16 ina219_calValue = 0;
u8 ina219_busVolt_LSB_mV = 4; // Bus Voltage LSB value = 4mV
u8 ina219_shuntVolt_LSB_uV = 10; // Shunt Voltage LSB value = 10uV
u32 ina219_current_LSB_uA;
u32 ina219_power_LSB_mW;
/**
* @brief INA219????
*/
void ina219_Write_Register(u8 reg, u16 dat)
{
u8 val[2];
val[0] = (u8)(dat >> 8);
val[1] = (u8)(dat & 0xFF);
I2C_WriteNbyte(INA219_I2C_ADDRESS, reg, val, 2);
}
/**
* @brief INA219????
*/
void ina219_Read_Register(u8 reg, u16 *dat)
{
u8 val[2];
I2C_ReadNbyte(INA219_I2C_ADDRESS, reg, val, 2);
*dat = ((u16)(val[0]) << 8) + val[1];
}
// INA219 Set Calibration 16V/16A(Max) 0.02|?
void ina219_SetCalibration_16V_16A(void)
{
u16 configValue;
// By default we use a pretty huge range for the input voltage,
// which probably isn't the most appropriate choice for system
// that don't use a lot of power. But all of the calculations
// are shown below if you want to change the settings. You will
// also need to change any relevant register settings, such as
// setting the VBUS_MAX to 16V instead of 32V, etc.
// VBUS_MAX = 16V (Assumes 16V, can also be set to 32V)
// VSHUNT_MAX = 0.32 (Assumes Gain 8, 320mV, can also be 0.16, 0.08, 0.04)
// RSHUNT = 0.02 (Resistor value in ohms)
// 1. Determine max possible current
// MaxPossible_I = VSHUNT_MAX / RSHUNT
// MaxPossible_I = 16A
// 2. Determine max expected current
// MaxExpected_I = 16A
// 3. Calculate possible range of LSBs (Min = 15-bit, Max = 12-bit)
// MinimumLSB = MaxExpected_I/32767
// MinimumLSB = 0.00048 (0.48mA per bit)
// MaximumLSB = MaxExpected_I/4096
// MaximumLSB = 0,00390 (3.9mA per bit)
// 4. Choose an LSB between the min and max values
// (Preferrably a roundish number close to MinLSB)
// CurrentLSB = 0.00050 (500uA per bit)
// 5. Compute the calibration register
// Cal = trunc (0.04096 / (Current_LSB * RSHUNT))
// Cal = 4096 (0x1000)
// ina219_calValue = 0x1000;
ina219_calValue = 0x0D90; //0x1000;
// 6. Calculate the power LSB
// PowerLSB = 20 * CurrentLSB
// PowerLSB = 0.01 (10mW per bit)
// 7. Compute the maximum current and shunt voltage values before overflow
//
// Max_Current = Current_LSB * 32767
// Max_Current = 16.3835A before overflow
//
// If Max_Current > Max_Possible_I then
// Max_Current_Before_Overflow = MaxPossible_I
// Else
// Max_Current_Before_Overflow = Max_Current
// End If
//
// Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT
// Max_ShuntVoltage = 0.32V
//
// If Max_ShuntVoltage >= VSHUNT_MAX
// Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX
// Else
// Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage
// End If
// 8. Compute the Maximum Power
// MaximumPower = Max_Current_Before_Overflow * VBUS_MAX
// MaximumPower = 1.6 * 16V
// MaximumPower = 256W
// Set multipliers to convert raw current/power values
ina219_current_LSB_uA = 100; // Current LSB = 500uA per bit
ina219_power_LSB_mW = 2; // Power LSB = 10mW per bit = 20 * Current LSB
// Set Calibration register to 'Cal' calculated above
ina219_Write_Register(INA219_REG_CALIBRATION, ina219_calValue);
// Set Config register to take into account the settings above
configValue = ( INA219_CFG_BVOLT_RANGE_16V | INA219_CFG_SVOLT_RANGE_320MV | INA219_CFG_BADCRES_12BIT_16S_8MS | INA219_CFG_SADCRES_12BIT_16S_8MS | INA219_CFG_MODE_SANDBVOLT_CONTINUOUS );
// configValue = ( INA219_CFG_BVOLT_RANGE_16V | INA219_CFG_SVOLT_RANGE_320MV | INA219_CFG_BADCRES_12BIT_32S_17MS | INA219_CFG_SADCRES_12BIT_32S_17MS | INA219_CFG_MODE_SANDBVOLT_CONTINUOUS );
ina219_Write_Register(INA219_REG_CONFIG, configValue);
}
void ina219_configureRegisters(void)
{
delay_ms(15);
ina219_SetCalibration_16V_16A();
}
int16 ina219_GetBusVoltage_raw(void)
{
int16 val;
ina219_Read_Register(INA219_REG_BUSVOLTAGE, (u16*)&val);
val >>= 3; // Shift to the right 3 to drop CNVR and OVF
return (val);
}
int16 ina219_GetCurrent_raw(void)
{
int16 val;
// Sometimes a sharp load will reset the INA219, which will
// reset the cal register, meaning CURRENT and POWER will
// not be available ... avoid this by always setting a cal
// value even if it's an unfortunate extra step
ina219_Write_Register(INA219_REG_CALIBRATION, ina219_calValue);
// Now we can safely read the CURRENT register!
ina219_Read_Register(INA219_REG_CURRENT, (u16*)&val);
return (val);
}
int16 ina219_GetBusVoltage_mV(void)
{
int16 val;
ina219_Read_Register(INA219_REG_BUSVOLTAGE, (u16*)&val);
val >>= 3; // Shift to the right 3 to drop CNVR and OVF
val *= ina219_busVolt_LSB_mV; // multiply by LSB(4mV)
return (int16)(val);
}
int32 ina219_GetShuntVoltage_uV(void)
{
int32 val;
int16 reg;
ina219_Read_Register(INA219_REG_SHUNTVOLTAGE, (u16*)®);
val = (int32)reg * ina219_shuntVolt_LSB_uV; // multiply by LSB(10uV)
return (int32)val;
}
int32 ina219_GetCurrent_uA(void)
{
int32 val;
int16 reg;
// Sometimes a sharp load will reset the INA219, which will
// reset the cal register, meaning CURRENT and POWER will
// not be available ... avoid this by always setting a cal
// value even if it's an unfortunate extra step
ina219_Write_Register(INA219_REG_CALIBRATION, ina219_calValue);
// Now we can safely read the CURRENT register!
ina219_Read_Register(INA219_REG_CURRENT, (u16*)®);
val = (int32)reg * ina219_current_LSB_uA;
return (int32)(val);
}
int32 ina219_GetPower_mW(void)
{
int32 val;
int16 reg;
// Sometimes a sharp load will reset the INA219, which will
// reset the cal register, meaning CURRENT and POWER will
// not be available ... avoid this by always setting a cal
// value even if it's an unfortunate extra step
ina219_Write_Register(INA219_REG_CALIBRATION, ina219_calValue);
// Now we can safely read the POWER register!
ina219_Read_Register(INA219_REG_POWER, (u16*)®);
val = (int32)reg * ina219_power_LSB_mW;
return (int32)(val);
}
void ina219_process(void)
{
// TODO: ???? Vin-?GND?????
ina219_value.voltage = ina219_GetBusVoltage_mV();
// TODO: ????????
ina219_value.shunt = ina219_GetShuntVoltage_uV();
// TODO: ??
ina219_value.current = ina219_GetCurrent_uA();
ina219_value.power = ina219_GetPower_mW();
}
void drv_ina219_init(void)
{
I2C_InitTypeDef i2c;
i2c.I2C_Enable = ENABLE;
i2c.I2C_Mode = I2C_Mode_Master;
i2c.I2C_Speed = MAIN_Fosc/2/(100000*2+4);
i2c.I2C_MS_WDTA = DISABLE;
i2c.I2C_SL_MA = ENABLE;
I2C_Init(&i2c);
// NVIC_I2C_Init(I2C_Mode_Master, ENABLE, Priority_1); // I2C Master????????
P2_MODE_IO_PU(GPIO_Pin_4);
P2_MODE_IO_PU(GPIO_Pin_5);
I2C_SW(I2C_P24_P25);
ina219_configureRegisters();
log_d("INA219 Driver Init\n");
}
#endif/****************************************Copyright (c)****************************************************
**
** °¬¿ËÄ·¿Æ¼¼(IKMSIK)
** ÌÔ±¦µêÆÌ: acmemcu.taobao.com
** ¼¼ÊõÂÛ̳: 930ebbs.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:
** Last modified Date:
** Last Version:
** Descriptions:
**--------------------------------------------------------------------------------------------------------
** Created by: FiYu
** Created date: 2022-5-1
** Version: 1.0
** Descriptions: 4λÊýÂë¹ÜÏÔʾʵÑé
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
** Rechecked by:
**********************************************************************************************************/
#include "config.h"
#include "uart.h"
#include "INA219.h"
int32 current_uA = 0;
int32 voltage_mV = 0;
int32 power_mW = 0;
/***************************************************************************
* Ãè Êö : Ö÷º¯Êý
* Èë ²Î : ÎÞ
* ·µ»ØÖµ : ÎÞ
**************************************************************************/
int main()
{
Uart1_Init(); //´®¿Ú1³õʼ»¯
EA = 1; //ʹÄÜ×ÜÖжÏ
delay_ms(10); //³õʼ»¯ºóÑÓʱ
drv_ina219_init();
while (1)
{
ina219_process();
current_uA = ina219_value.current;
voltage_mV = ina219_value.voltage;
power_mW = ina219_value.power;
}
}
Rebuild target 'Project'
compiling STC32G_GPIO.c...
compiling STC32G_Delay.c...
compiling STC32G_NVIC.c...
compiling STC32G_UART.c...
compiling STC32G_UART_Isr.c...
compiling STC32G_Timer.c...
compiling STC32G_Exti.c...
compiling main.c...
compiling i2c.c...
compiling uart.c...
compiling INA219.c...
..\User\bsp\INA219.c(14): warning C322: 'TCFG_DRV_INA219_SUPPORT': unknown identifier
linking...
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: GPIO_Inilize/STC32G_GPIO
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_ADC_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_M2M_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_LCM_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_INT0_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_INT1_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_INT2_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_INT3_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_SPI_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_INT4_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_Timer0_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_Timer1_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_Timer2_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_Timer3_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_Timer4_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_I2C_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_I2CR_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_I2CT_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_ADC_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART1_Rx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART2_Rx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART3_Rx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART1_Tx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART4_Rx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART2_Tx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART3_Tx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_CAN_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_DMA_UART4_Tx_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_LCM_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_CMP_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_LIN_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_RTC_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_SPI_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_UART2_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_UART3_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_UART4_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: NVIC_PWM_Init/STC32G_NVIC
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: PrintString1/STC32G_UART
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: PrintString2/STC32G_UART
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: PrintString3/STC32G_UART
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: PrintString4/STC32G_UART
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: putchar/STC32G_UART
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: Timer_Inilize/STC32G_Timer
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: Ext_Inilize/STC32G_Exti
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_Ack/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_Start/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_SendAck/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_SendByte/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_Stop/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2c_Init/i2c
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
NAME: I2C_NoAck/i2c
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: drv_ina219_init
MODULE: .\main.obj (main)
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ina219_process
MODULE: .\main.obj (main)
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ina219_value
MODULE: .\main.obj (main)
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: drv_ina219_init
MODULE: .\main.obj (main)
ADDRESS: FF13E5H
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ina219_process
MODULE: .\main.obj (main)
ADDRESS: FF13E8H
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ina219_value
MODULE: .\main.obj (main)
ADDRESS: FF13ECH
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ina219_value
MODULE: .\main.obj (main)
ADDRESS: FF13F2H
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ina219_value
MODULE: .\main.obj (main)
ADDRESS: FF13FCH
Program Size: data=57.2 edata+hdata=896 xdata=0 const=26 code=5519
Target not created.帮我检查,这有什么问题吗
最新发布