110VCGQ/project/110VCGQV6/user/Inc/user.h

116 lines
3.5 KiB
C
Raw Normal View History

2024-11-18 10:09:39 +08:00
/*
* 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电机状态
* 4PWM波占空比 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_ */