|
@ -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_startByPeriod(uint32_t periodus) { simpleTimer_startByFreq(1000000.0 / periodus); } |
|
|
void ChipTimIrqShceduler::simpleTimer_startByFreq(float freq) { |
|
|
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 prescaler = 0; |
|
|
uint32_t autoreload = 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)); |
|
|
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); |
|
|
HAL_TIM_Base_Start_IT(m_htim); |
|
|
|
|
|
|
|
|