#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; 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++; } //重写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); } }