127 lines
2.8 KiB
C
127 lines
2.8 KiB
C
#include "timer.h"
|
||
|
||
int heart_1000ms_flag = 0;
|
||
int heart_1000ms_cnt = 0;
|
||
int battery_2000ms_flag = 0;
|
||
int battery_2000ms_cnt = 0;
|
||
int plot_ms_flag = 0;
|
||
int plot_ms_cnt = 0;
|
||
int twk_1000ms_flag = 0;
|
||
int twk_1000ms_cnt = 0;
|
||
int input_500ms_flag = 0;
|
||
int input_500ms_cnt = 0;
|
||
uint16_t sig2slave_previous_tick = 0;
|
||
uint16_t sig2slave_current_tick = 0;
|
||
|
||
void duty_tim3(void)
|
||
{
|
||
freq_signal.over_cnt++;
|
||
|
||
}
|
||
void duty_tim6(void)
|
||
{
|
||
//lv_tick_inc(1);
|
||
|
||
heart_1000ms_cnt++;
|
||
if( heart_1000ms_cnt >= 1000)
|
||
{
|
||
heart_1000ms_cnt = 0;
|
||
heart_1000ms_flag = 1;
|
||
}
|
||
|
||
battery_2000ms_cnt++;
|
||
if( battery_2000ms_cnt >= 2000)
|
||
{
|
||
battery_2000ms_cnt = 0;
|
||
battery_2000ms_flag = 1;
|
||
}
|
||
|
||
plot_ms_cnt++;
|
||
if( plot_ms_cnt >= tabdata.item1_page0_sample_interval)
|
||
{
|
||
plot_ms_cnt = 0;
|
||
plot_ms_flag = 1;
|
||
}
|
||
|
||
twk_1000ms_cnt++;
|
||
if( twk_1000ms_cnt >= 1000)
|
||
{
|
||
twk_1000ms_cnt = 0;
|
||
twk_1000ms_flag = 1;
|
||
}
|
||
|
||
input_500ms_cnt++;
|
||
if( input_500ms_cnt >= 500)
|
||
{
|
||
input_500ms_cnt = 0;
|
||
input_500ms_flag = 1;
|
||
}
|
||
|
||
//发送完成 或者 已经接收到一部分数据之后开始计时
|
||
if( (sig2slave_step == 1)||(mod_master.tx_flag == TX_OK) )
|
||
{
|
||
sig2slave_current_tick++;
|
||
mod_master.rx_error_message = RX_ERROR_NONE;
|
||
|
||
if(sig2slave_current_tick > mod_master.timeout)
|
||
{
|
||
if(sig2slave_step == 0)
|
||
{
|
||
//进入此处说明发送成功后未收到任何数据
|
||
mod_master.rx_error_message = RX_ERROR_TIMEOUT;
|
||
mod_master.tx_flag = TX_NONE;
|
||
}
|
||
|
||
HAL_UART_DMAStop(&huart2);
|
||
__HAL_UART_CLEAR_IDLEFLAG(&huart2);
|
||
|
||
sig2slave_current_tick = 0;
|
||
sig2slave_step = 2; //无论是哪个阶段出现超时,均跳转至step2
|
||
scom2_rs485.rx_flag = TRUE;
|
||
sig_trans = TRANS_MODBUS_SIG_TO_SLAVE; //发送回调中会修改成none,因此在这里重新赋值(接收超时也属于接收的一种结果)
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void delay_cnt(uint16_t cnt)
|
||
{
|
||
while(cnt > 0)
|
||
{
|
||
cnt--;
|
||
}
|
||
}
|
||
|
||
#define CPU_FREQUENCY_MHZ 165.888 // STM32时钟主频
|
||
void wu_delay_us(__IO uint32_t delay)
|
||
{
|
||
int last, curr, val;
|
||
int temp;
|
||
|
||
while (delay != 0)
|
||
{
|
||
temp = delay > 900 ? 900 : delay;
|
||
last = SysTick->VAL;
|
||
curr = last - CPU_FREQUENCY_MHZ * temp;
|
||
if (curr >= 0)
|
||
{
|
||
do
|
||
{
|
||
val = SysTick->VAL;
|
||
}
|
||
while ((val < last) && (val >= curr));
|
||
}
|
||
else
|
||
{
|
||
curr += CPU_FREQUENCY_MHZ * 1000;
|
||
do
|
||
{
|
||
val = SysTick->VAL;
|
||
}
|
||
while ((val <= last) || (val > curr));
|
||
}
|
||
delay -= temp;
|
||
}
|
||
}
|
||
|