Browse Source

添加调试指示灯

master
zhaohe 2 years ago
parent
commit
73a80a6232
  1. 3
      chip/basic/clock.cpp
  2. 13
      chip/chip.cpp
  3. 8
      chip/chip.hpp
  4. 3
      chip/chip_tim_irq_shceduler.cpp
  5. 15
      chip/zirq_dispatcher.cpp

3
chip/basic/clock.cpp

@ -20,9 +20,6 @@ uint32_t zchip_clock_init(zchip_clock_cfg_t* cfg) {
cfg->usdleaytim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_Base_Init(cfg->usdleaytim);
HAL_NVIC_SetPriority(chip_tim_get_irq(cfg->usdleaytim), IFLYTOP_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(chip_tim_get_irq(cfg->usdleaytim));
return 0;
}
//

13
chip/chip.cpp

@ -1,10 +1,15 @@
#include "chip.hpp"
extern "C" {
static iflytop::ZGPIO *g_debuglight = NULL;
static iflytop::ZGPIO g_debuglight;
static Pin_t g_debuglight_pin = PinNull;
void chip_init(chip_cfg_t *cfg) {
g_debuglight = cfg->debuglight;
g_debuglight_pin = cfg->debuglight;
if (g_debuglight_pin != PinNull) {
g_debuglight.initAsOutput(g_debuglight_pin, iflytop::ZGPIO::kMode_nopull, false, false);
}
//
zchip_loggger_init(cfg->huart);
//
@ -18,8 +23,8 @@ void chip_init(chip_cfg_t *cfg) {
iflytop::ChipTimIrqShceduler::instance().regPeriodJob(
[](iflytop::ChipTimIrqShceduler::Job *job) {
if (!g_debuglight) return;
g_debuglight->toggleState();
if (g_debuglight_pin == PinNull) return;
g_debuglight.toggleState();
},
100);

8
chip/chip.hpp

@ -10,10 +10,10 @@
extern "C" {
typedef struct {
zchip_tim_t *us_dleay_tim;
zchip_tim_t *tim_irq_scheduler_tim;
zchip_uart_t *huart;
iflytop::ZGPIO *debuglight;
zchip_tim_t *us_dleay_tim;
zchip_tim_t *tim_irq_scheduler_tim;
zchip_uart_t *huart;
Pin_t debuglight;
} chip_cfg_t;
void chip_init(chip_cfg_t *cfg);

3
chip/chip_tim_irq_shceduler.cpp

@ -41,6 +41,9 @@ void ChipTimIrqShceduler::simpleTimer_startByFreq(float freq) {
m_htim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_Base_Init(m_htim);
HAL_NVIC_SetPriority(chip_tim_get_irq(m_htim), IFLYTOP_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(chip_tim_get_irq(m_htim));
HAL_TIM_Base_Start_IT(m_htim);
ZIRQDispatcher::instance().regTimIrqListener([this](zchip_tim_t* tim) {

15
chip/zirq_dispatcher.cpp

@ -4,7 +4,20 @@ using namespace iflytop;
using namespace std;
extern "C" {
void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { ZIRQDispatcher::instance()._callOnTimIrq(htim); }
/**
* @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() {

Loading…
Cancel
Save