/* mock_stm32.h — 测试桩: 含所有非 stm32f10x 的类型和桩 */ #ifndef MOCK_STM32_H #define MOCK_STM32_H #include #include /* OS 桩 */ typedef struct { int d; } OS_TCB; typedef uint8_t CPU_CHAR; typedef uint32_t CPU_STK; typedef uint32_t CPU_STK_SIZE; typedef uint8_t OS_MSG_QTY; typedef uint32_t OS_TICK; #define OS_OPT_TASK_STK_CHK 0x0001 #define OS_OPT_TASK_STK_CLR 0x0002 #define OS_OPT_TIME_DLY 0x0000 typedef struct { int d; } OS_ERR; static void OSTimeDlyHMSM(int h,int m,int s,int ms,int o,OS_ERR*e){ (void)h;(void)m;(void)s;(void)ms;(void)o;(void)e; } /* GD32 外设桩 */ #define rcu_periph_clock_enable(x) (void)(x) #define gpio_init(p,m,s,pin) (void)(p),(void)(m),(void)(s),(void)(pin) #define gpio_exti_source_select(port, pin) (void)(port),(void)(pin) #define exti_deinit() do{}while(0) #define exti_init(l,m,t) (void)(l),(void)(m),(void)(t) #define exti_interrupt_enable(l) (void)(l) #define exti_interrupt_flag_clear(l) (void)(l) #define nvic_irq_enable(i,p,s) (void)(i),(void)(p),(void)(s) #define RCU_GPIOA 0 #define RCU_GPIOB 1 #define RCU_AF 2 #define RCU_ADC0 3 #define GPIO_MODE_IN_FLOATING 0 #define GPIO_MODE_OUT_PP 0 #define GPIO_MODE_IPU 0 #define GPIO_MODE_AIN 0 #define GPIO_OSPEED_2MHZ 0 #define EXTI_INTERRUPT 0 #define EXTI_TRIG_FALLING 0 /* ADC 桩 */ #define adc_deinit(p) (void)(p) #define adc_enable(p) (void)(p) #define adc_calibration_enable(p) (void)(p) #define adc_software_trigger_enable(p,c) (void)(p),(void)(c) #define adc_channel_length_config(p,c,n) (void)(p),(void)(c),(void)(n) #define adc_regular_channel_config(p,r,ch,t) (void)(p),(void)(r),(void)(ch),(void)(t) #define adc_external_trigger_source_config(p,c,t) (void)(p),(void)(c),(void)(t) #define adc_data_alignment_config(p,a) (void)(p),(void)(a) #define adc_resolution_config(p,r) (void)(p),(void)(r) static int adc_flag_get(int p, int f) { (void)p; (void)f; return 0; } static int adc_regular_data_read(int p) { (void)p; return 2047; } #define ADC_REGULAR_CHANNEL 0 #define ADC_SAMPLETIME_239POINT5 0 #define ADC_EXTTRIG_REGULAR_NONE 0 #define ADC_DATAALIGN_RIGHT 0 #define ADC_RESOLUTION_12B 0 #define ADC_FLAG_EOC 0 /* board_config 字段桩 */ #define BQ_INT_PORT ((void*)0) #define BQ_INT_PIN 0x0002 #define BQ_INT_EXTI_LINE 1 #define BQ_INT_EXTI_IRQn 1 #define NTC_ADC_PORT ((void*)0) #define NTC_ADC_PIN 0x0008 #define NTC_ADC_PERIPH 0 #define NTC_ADC_CHANNEL 3 #define CHARGE_TASK_PRIO 5 #define ADC_TASK_PRIO 4 #define CHARGE_TASK_PERIOD_MS 200 #define CHARGE_TASK_STACK_SIZE 1024 #define ADC_TASK_STACK_SIZE 512 #define WD_RESET_PERIOD_MS 10000 #define BQ_STAT1_READ() 1 #define BQ_STAT2_READ() 1 #define BQ_PG_READ() 1 #define BQ_CE_HIGH() do{}while(0) #define BQ_CE_LOW() do{}while(0) /* 全局变量 */ static OS_TCB ChargeTaskTCB, AdcTaskTCB; static CPU_STK ChargeTaskStk[1024], AdcTaskStk[512]; /* I2C mock 接口 */ extern uint8_t __mock_soft_i2c_read_reg(uint8_t dev, uint8_t reg); extern uint8_t __mock_soft_i2c_write_reg(uint8_t dev, uint8_t reg, uint8_t val); extern uint16_t __mock_soft_i2c_read_reg16(uint8_t dev, uint8_t reg); extern uint8_t __mock_soft_i2c_write_reg16(uint8_t dev, uint8_t reg, uint16_t val); extern void mock_i2c_set_reg(uint8_t reg, uint8_t val); extern void mock_i2c_set_reg16(uint8_t reg, uint16_t val); extern uint8_t mock_regs_get_8(uint8_t reg); extern uint16_t mock_regs_get_16(uint8_t reg); extern void mock_i2c_reset(void); /* 重定向 I2C */ #define SoftI2C_ReadReg(d, r) __mock_soft_i2c_read_reg(d, r) #define SoftI2C_WriteReg(d, r, v) __mock_soft_i2c_write_reg(d, r, v) #define SoftI2C_ReadReg16(d, r) __mock_soft_i2c_read_reg16(d, r) #define SoftI2C_WriteReg16(d, r, v) __mock_soft_i2c_write_reg16(d, r, v) extern int BQ25756_AI4_Init(void); #ifndef __NOP #define __NOP() do{}while(0) #endif #endif