acdt/users/Src/timer.c

98 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "timer.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_100ms_flag_pv = 0;
int it_100ms_cnt_pv = 0;
int it_50ms_flag_pv = 0;
int it_50ms_cnt_pv = 0;
int it_30ms_flag_pv = 0;
int it_30ms_cnt_pv = 0;
int tick500ms = 0;
int tick500ms_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; }
if(it_100ms_cnt_pv > 99 ) { it_100ms_flag_pv = 1; it_100ms_cnt_pv = 0; }
it_100ms_cnt_pv++;
if(it_50ms_cnt_pv > 49 ) { it_50ms_flag_pv = 1; it_50ms_cnt_pv = 0; }
it_50ms_cnt_pv++;
if(it_30ms_cnt_pv > 29 ) { it_30ms_flag_pv = 1; it_30ms_cnt_pv = 0; }
it_30ms_cnt_pv++;
if(tick500ms_cnt > 499)
{
tick500ms_cnt = 0;
tick500ms = (tick500ms > 7200)?(0):(tick500ms + 1); //每小时清零一次
}
tick500ms_cnt++;
}
//重写TIM中断调用函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim6)
{
tim6_cnt();
}
if(htim == &MODBUS_HTIM)
{
__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(htim == &htim10)
// {
// hart_tim_cb();
// }
}
uint8_t exit_check = 0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //外部中断接编码器Z相
{
if(GPIO_Pin == GPIO_PIN_13)
{
exit_check++;
exit_check = exit_check*(exit_check < 255);
}
}