91 lines
2.5 KiB
C
91 lines
2.5 KiB
C
#include "timer.h"
|
||
#include "iousart.h"
|
||
#include "atcom.h"
|
||
|
||
int it_5ms_flag = 0;
|
||
int it_5ms_cnt = 0;
|
||
int it_10ms_flag = 0;
|
||
int it_10ms_cnt = 0;
|
||
int it_25ms_flag = 0;
|
||
int it_25ms_cnt = 0;
|
||
int it_50ms_flag = 0;
|
||
int it_50ms_cnt = 0;
|
||
int it_100ms_flag = 0;
|
||
int it_100ms_cnt = 0;
|
||
int it_300ms_flag = 0;
|
||
int it_300ms_cnt = 0;
|
||
int it_500ms_flag = 0;
|
||
int it_500ms_cnt = 0;
|
||
int it_1000ms_flag = 0;
|
||
int it_1000ms_cnt = 0;
|
||
int it_2000ms_flag = 0;
|
||
int it_2000ms_cnt = 0;
|
||
|
||
void tim6_cnt(void)
|
||
{
|
||
it_5ms_cnt++;
|
||
if(it_5ms_cnt > 4 ) { it_5ms_flag = 1; it_5ms_cnt = 0; }
|
||
it_10ms_cnt++;
|
||
if(it_10ms_cnt > 9 ) { it_10ms_flag = 1; it_10ms_cnt = 0; }
|
||
it_25ms_cnt++;
|
||
if(it_25ms_cnt > 24 ) { it_25ms_flag = 1; it_25ms_cnt = 0; }
|
||
it_50ms_cnt++;
|
||
if(it_50ms_cnt > 49 ) { it_50ms_flag = 1; it_50ms_cnt = 0; }
|
||
it_100ms_cnt++;
|
||
if(it_100ms_cnt > 99 ) { it_100ms_flag = 1; it_100ms_cnt = 0; }
|
||
it_300ms_cnt++;
|
||
if(it_300ms_cnt > 299) { it_300ms_flag = 1; it_300ms_cnt = 0; }
|
||
it_500ms_cnt++;
|
||
if(it_500ms_cnt > 499) { it_500ms_flag = 1; it_500ms_cnt = 0; }
|
||
it_1000ms_cnt++;
|
||
if(it_1000ms_cnt > 999) { it_1000ms_flag = 1; it_1000ms_cnt = 0; }
|
||
it_2000ms_cnt++;
|
||
if(it_2000ms_cnt > 1999) { it_2000ms_flag = 1; it_2000ms_cnt = 0; }
|
||
}
|
||
|
||
//重写TIM中断调用函数
|
||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||
{
|
||
if(htim == &htim6)
|
||
{
|
||
tim6_cnt();
|
||
}
|
||
if(htim == &MODBUS_HTIM)
|
||
{
|
||
if(usart_flag == 1)
|
||
{
|
||
__HAL_TIM_CLEAR_FLAG(&MODBUS_HTIM, TIM_FLAG_UPDATE);//产生中断证明超过1ms没有接收到数据了,一帧接收完成
|
||
HAL_TIM_Base_Stop_IT(&MODBUS_HTIM); //中断之后停止定时器,开启在下一次接收到数据开始
|
||
MODBUS_UART.rx_size = MODBUS_UART.rx_buf_cnt; //将接收到数据数量赋值
|
||
MODBUS_UART.rx_buf_cnt = 0; //清零
|
||
modbus_process_rtu();
|
||
}
|
||
if(usart_flag == 6)
|
||
{
|
||
__HAL_TIM_CLEAR_FLAG(&MODBUS_HTIM, TIM_FLAG_UPDATE);//产生中断证明超过1ms没有接收到数据了,一帧接收完成
|
||
HAL_TIM_Base_Stop_IT(&MODBUS_HTIM); //中断之后停止定时器,开启在下一次接收到数据开始
|
||
uart6.rx_size = uart6.rx_buf_cnt; //将接收到数据数量赋值
|
||
uart6.rx_buf_cnt = 0; //清零
|
||
|
||
if(uart6.rx_size < 8) return; // 数据长度不是有效值
|
||
|
||
if(wifi_set_state == 0)
|
||
{
|
||
if((_memcmp(array1,(const uint8_t*)"WIFI DISCONNECT",14) == 0) || (_memcmp(array1,(const uint8_t*)"WIFI CONNECT",14) == 0))
|
||
{
|
||
wifi_set_state = 11;
|
||
}
|
||
}
|
||
|
||
modbus_analysis_tcp(array1, uart6.rx_size); // 协议处理uart6.rx_buf
|
||
}
|
||
}
|
||
if(htim == &htim11)
|
||
{
|
||
iousart_tim_cb();
|
||
}
|
||
|
||
}
|
||
|
||
|