/* * user.h * * Created on: Sep 23, 2024 * Author: 10425 */ #ifndef INC_USER_H_ #define INC_USER_H_ #include "string.h" #include "stdlib.h" #include "main.h" #include "main.h" #include "adc.h" #include "dma.h" #include "i2c.h" #include "tim.h" #include "usart.h" #include "gpio.h" #include "user_stick.h" #include "AHT20.h" #include "AT24C16.h" #define ENABLE_INT() __set_PRIMASK(0) /* 使能全局中断 */ #define DISABLE_INT() __set_PRIMASK(1) /* 禁止全局中断 */ extern DMA_HandleTypeDef hdma_adc; extern ADC_HandleTypeDef hadc1; extern TIM_HandleTypeDef htim14; extern DMA_HandleTypeDef hdma_usart1_rx; extern DMA_HandleTypeDef hdma_usart1_tx; extern UART_HandleTypeDef huart1; #define BUFF_LEN 256 #define ADCBUFF_LEN 250 #define FLASH_BASE_ADDR 0x08000000 //STM32 FLASH的起始地址 #define FLASH_SECTOR_NUM 64 //STM32 FLASH所有扇区数 #define FLASH_SECTOR_SIZE 2048 #define app1_addr 0x08000000 #define app2_addr 0x0800C800 #define app_flag 0x08019000 typedef void (*LoadApp)(void); //定义一个函数指针类型. /* 1:传感器数据 2:投退状态 3:电机状态 * 4:PWM波占空比 5:传感器缩放系数 6:传感器加减系数 * 7:电机运行时间 8:设置波特率 9:温湿度 * 10:方波投退判断阈值 11:传感器退阈值 12:电压值 * 13:电压阈值,电压小于该值时为退 */ struct REGISTER { uint8_t addr; int16_t adc_max; //1:传感器数据 int8_t adc_state; // 2:投退状态 uint8_t motor_state; //电机状态 uint16_t pwm_pulse; //PWM占空比 uint16_t adcValue_factor; //传感器数据缩放系数 uint16_t adcValue_addnum; //传感器数据加减系数 int16_t peak_value; //峰峰值 uint8_t baud_rate; //波特率 uint8_t humidness; //湿度 uint8_t tempe; //温度 uint16_t estimate_value; //方波投退判断阈值 uint16_t threshold_value; //传感器退阈值 int16_t voltage; //电压值 int16_t reference; //电压参考值 uint16_t voltage_thresh; //电压阈值; }; extern volatile struct REGISTER dev_reg; enum WRITE_REG_ADDR { write_addr =0, write_baud =2, write_pulse = 4, write_factor = 6, write_addnum = 8, write_estimate = 10, write_threshold = 12, write_reference = 14, write_voltageth = 16 }; extern uint32_t updata_appaddr; extern volatile uint8_t usart_count; //串口接收数据个数 extern uint8_t RxBuff[BUFF_LEN] ; //串口接收缓冲区 extern uint8_t TXBuff[BUFF_LEN] ; //串口发送缓冲区 extern uint8_t uBuff[BUFF_LEN] ; //用户缓冲区 extern volatile int8_t polarity; //电场极性,投退状态 extern volatile uint8_t electric_flag ; //外加的反向电场极限,0为负,1为正 extern uint16_t RegularConvData_Tab[ADCBUFF_LEN] ; //ADC采集原始数据 //最终峰峰值和 extern volatile int16_t adc_positive , adc_negative; //加外加电场后的adc值 extern uint16_t user_temp; void ADC_MAX(); void user_main(); void user_init(); void Usart_Receive(); void MODBUS_03H(); void MODBUS_06H(); void send_ack(uint8_t cnt); uint16_t crc16_modbus(uint8_t *data, uint16_t length); void Uart_SetBaud(int16_t baud); void calculate_voltage(void); HAL_StatusTypeDef write_flash(uint16_t addr,int16_t data); void MODBUS_10H(); HAL_StatusTypeDef write_code(uint32_t addr,uint8_t* data,uint16_t length); #endif /* INC_USER_H_ */