#include "zirq_dispatcher.hpp" using namespace iflytop; using namespace std; extern "C" { /** * @brief 这个方法必须在HAL_TIM_PeriodElapsedCallback中调用 * * @param htim */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { #ifdef IFLTYOP_ZTICKET_TIMER if (htim->Instance == IFLTYOP_ZTICKET_TIMER) { HAL_IncTick(); return; } #endif ZIRQDispatcher::instance()._callOnTimIrq(htim); } } ZIRQDispatcher &ZIRQDispatcher::instance() { static ZIRQDispatcher instance; return instance; } void ZIRQDispatcher::regTimIrqListener(ontimirq_t listener) { m_ontimirqs.push_back(listener); } void ZIRQDispatcher::_callOnTimIrq(zchip_tim_t *tim) { for (auto &listener : m_ontimirqs) { listener(tim); } }