#ifndef __USART_H #define __USART_H #include "stm32f4xx.h" #include "stdio.h" #define RS485_SEND GPIO_SetBits(GPIOE,GPIO_Pin_15); //默认进入发送模式 #define RS485_RECEIVE GPIO_ResetBits(GPIOE,GPIO_Pin_15); //默认进入接收模式 void USART1_Config(void); void RS485_Config(void); void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch); void Usart_SendString( USART_TypeDef * pUSARTx, char *str); void Usart_SendHalfWord( USART_TypeDef * pUSARTx, uint16_t ch); void usart_Init(void); void RS485_DMA_Init(void); //串口3的发送函数 void Uart3_SendStr(u8* SendBuf,u8 len); void DealWith_UartData(void); //微秒延时 void DelayUs(unsigned int delay); //毫秒延时 void DelayMs(unsigned int delay); //接收数据判断(放置串口接收数据内) void Do_Receive_Uart_For_Module(unsigned char ch); //单独发送 void UART1_SendData(unsigned char dat); //发送数据 void UART1_Send_Char(unsigned char dat); //发送一个字符串 //extern void send_string(uchar *p); //初始化 void InitUart_Data(void); //接收串口1 void start_ttl_receive_timer(unsigned long ms); void over_ttl_receive_timer(void); void clear_ttl_receive_timer(void); //返回串口屏应答是否接收完成的结果 //0:没超时 1:超时 unsigned char judge_ttl_receive_timer(void); //放在大循环中的计时器里 void process_ttl_receive_timer(void); //放串口中断内,接收数据 void receive_ttl_data(unsigned char rx_data); //CRC校验 unsigned int ModbusCRC16(unsigned char *data_value, unsigned char length); //异或校验 //unsigned char VerfiyRC(unsigned char data_value[], unsigned char length); //发送延时 void Uart_Send_Delay(unsigned int delay); //发送数据 void send_set_resp(unsigned int OrderNum, unsigned int addr, unsigned char Num, unsigned char sData[]); //分析地址是否为本地址 unsigned char Check_Resive_Addr(unsigned short addr); //接收数据判断(放置串口接收数据内) void Do_Receive_Uart_For_Module(unsigned char ch); //数据长度 unsigned char Get_Data_Len(void); //检查校验 unsigned char Check_VerfiyData(void); //数据接收分析(放置大循环内) void Deal_Uart_Data_For_Module(void); #endif /* __USART1_H */