diff --git a/chip/basic/clock.cpp b/chip/basic/clock.cpp index 6e2ada2..452294e 100644 --- a/chip/basic/clock.cpp +++ b/chip/basic/clock.cpp @@ -1,10 +1,25 @@ #include "clock.hpp" + +#include "chip_helper.hpp" extern "C" { static zchip_tim_t* m_usdleaytim; uint32_t zchip_clock_init(zchip_clock_cfg_t* cfg) { m_usdleaytim = cfg->usdleaytim; + + uint32_t freq = chip_get_timer_clock_sorce_freq(cfg->usdleaytim); + uint32_t prescaler = freq / 1000000 - 1; // 1us + uint32_t autoreload = 65535; + + HAL_TIM_Base_DeInit(cfg->usdleaytim); + + cfg->usdleaytim->Init.Prescaler = prescaler; + cfg->usdleaytim->Init.CounterMode = TIM_COUNTERMODE_UP; + cfg->usdleaytim->Init.Period = autoreload; + cfg->usdleaytim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + HAL_TIM_Base_Init(cfg->usdleaytim); + return 0; } // @@ -36,6 +51,4 @@ void zchip_clock_early_delayus(uint32_t n) { __zchip_clock_early_delayus(1000); } } - - } \ No newline at end of file diff --git a/chip/chip.cpp b/chip/chip.cpp index 43f1c9b..3d41b0b 100644 --- a/chip/chip.cpp +++ b/chip/chip.cpp @@ -3,14 +3,21 @@ extern "C" { void chip_init(chip_cfg_t *cfg) { // + zchip_loggger_init(cfg->huart); + // zchip_clock_cfg_t zchip_clock_cfg; zchip_clock_cfg.usdleaytim = cfg->us_dleay_tim; zchip_clock_init(&zchip_clock_cfg); // - zchip_loggger_init(cfg->huart); - // iflytop::ChipTimIrqShceduler::Cfg ChipTimIrqShceduler_cfg; ChipTimIrqShceduler_cfg.schedulertim = cfg->tim_irq_scheduler_tim; iflytop::ChipTimIrqShceduler::instance().initialize(&ChipTimIrqShceduler_cfg); + + ZLOGI("SYS", "chip init ok"); + ZLOGI("SYS", "= manufacturer : %s", MANUFACTURER); + ZLOGI("SYS", "= project name : %s", PROJECT_NAME); + ZLOGI("SYS", "= version : %s", VERSION); + ZLOGI("SYS", "= freq : %d", HAL_RCC_GetSysClockFreq()); + ZLOGI("SYS", "= build time : %s", __DATE__ " " __TIME__); } } \ No newline at end of file diff --git a/chip/chip_tim_irq_shceduler.cpp b/chip/chip_tim_irq_shceduler.cpp index 7ac5ed0..a920d58 100644 --- a/chip/chip_tim_irq_shceduler.cpp +++ b/chip/chip_tim_irq_shceduler.cpp @@ -27,15 +27,19 @@ void ChipTimIrqShceduler::regPeriodJob(jobcb_t jobcb, uint32_t period_ms) { *******************************************************************************/ void ChipTimIrqShceduler::simpleTimer_startByPeriod(uint32_t periodus) { simpleTimer_startByFreq(1000000.0 / periodus); } void ChipTimIrqShceduler::simpleTimer_startByFreq(float freq) { - ZASSERT(m_htim->Init.AutoReloadPreload == TIM_AUTORELOAD_PRELOAD_ENABLE) + // ZASSERT(m_htim->Init.AutoReloadPreload == TIM_AUTORELOAD_PRELOAD_ENABLE) uint32_t prescaler = 0; uint32_t autoreload = 0; ZASSERT(chip_calculate_prescaler_and_autoreload_by_expect_freq(chip_get_timer_clock_sorce_freq(m_htim), freq, &prescaler, &autoreload)); - __HAL_TIM_SET_AUTORELOAD(m_htim, autoreload); - __HAL_TIM_SET_PRESCALER(m_htim, prescaler); + HAL_TIM_Base_DeInit(m_htim); + m_htim->Init.Prescaler = prescaler; + m_htim->Init.CounterMode = TIM_COUNTERMODE_UP; + m_htim->Init.Period = autoreload; + m_htim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + HAL_TIM_Base_Init(m_htim); HAL_TIM_Base_Start_IT(m_htim); diff --git a/chip/chip_tim_irq_shceduler.hpp b/chip/chip_tim_irq_shceduler.hpp index 41b0e00..6c30f90 100644 --- a/chip/chip_tim_irq_shceduler.hpp +++ b/chip/chip_tim_irq_shceduler.hpp @@ -55,4 +55,5 @@ class ChipTimIrqShceduler { void simpleTimer_stop(); }; -} // namespace iflytop \ No newline at end of file +} // namespace iflytop +