2026-03-20 21:16:58 +08:00
|
|
|
|
#include "../main/SystemInclude.h"
|
|
|
|
|
|
|
|
|
|
|
|
/*==================================================================================*/
|
|
|
|
|
|
/*BTimer0 */
|
|
|
|
|
|
/*==================================================================================*/
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
2026-03-20 21:19:53 +08:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> BTIM0 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note ʱ<EFBFBD><EFBFBD>ԴΪϵͳʱ<EFBFBD><EFBFBD> HCLK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SystemClockConfiguration <EFBFBD><EFBFBD><EFBFBD>ñ仯<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4MHz/8MHz/16MHz/32MHz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> T = (btim_period + 1) / HCLK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD>롣
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param btim_period: <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>0~65535<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example
|
|
|
|
|
|
* // <20><><EFBFBD><EFBFBD> HCLK = 4MHz<48><7A><EFBFBD><EFBFBD>Ҫ 1ms <20><><EFBFBD>ڣ<EFBFBD>btim_period = 4e6 * 0.001 - 1 = 3999
|
|
|
|
|
|
* BTIM0_Init(3999);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
**/
|
|
|
|
|
|
void BTIM0_Init(uint16_t btim_period)
|
|
|
|
|
|
{
|
|
|
|
|
|
BTIM_Base_InitTypeDef BTIM_InitStructure;
|
|
|
|
|
|
|
|
|
|
|
|
BTIM_InitStructure.MDIS = ENABLE; // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
BTIM_InitStructure.FreezingMode = DISABLE;
|
|
|
|
|
|
BTIM_InitStructure.ChainedMode = DISABLE;
|
|
|
|
|
|
LHL_BTIM_Base_Init(BTIM, &BTIM_InitStructure);
|
|
|
|
|
|
LHL_BTIM_SetPeriod(BTIMER_0,btim_period );
|
|
|
|
|
|
LHL_BTIM_ITConfig(BTIMER_0, ENABLE);
|
|
|
|
|
|
// NVIC_EnableIRQ(TIM5_IRQn); // BTIMER0<52><30>ӦTIM5_IRQ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
2026-03-20 21:19:53 +08:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> BTIM0 <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD> BTIM0_Init <EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param btim_period: <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
* @example
|
|
|
|
|
|
* // HCLK = 4MHz<48><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1ms <20><><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
* StartBtimer0(3999);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
**/
|
|
|
|
|
|
void StartBtimer0(uint16_t btim_period)
|
|
|
|
|
|
{
|
|
|
|
|
|
BTIM0_Init(btim_period);
|
|
|
|
|
|
BTIM->TCTRL_0 |= BTIM_TCTRL_TEN_Msk; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> LHL_BTIM_Start(BTIMER_0,btim_period,0);
|
|
|
|
|
|
// NVIC_EnableIRQ(TIM5_IRQn); // BTIMER0<52><30>ӦTIM5_IRQ
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief ֹͣ BTIM0 <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>λ TEN<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param <EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example StopBtimer0();
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void StopBtimer0(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
// LHL_BTIM_Stop(BTIMER_0);
|
|
|
|
|
|
BTIM->TCTRL_0 &= ~BTIM_TCTRL_TEN_Msk;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*==================================================================================*/
|
|
|
|
|
|
/*BTimer1 */
|
|
|
|
|
|
/*==================================================================================*/
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> BTIM1 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note ͬ BTIM0<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ԴΪϵͳʱ<EFBFBD><EFBFBD> HCLK<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param btim_period: <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
* @example BTIM1_Init(3999); // HCLK=4MHz<48><7A>1ms <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void BTIM1_Init(uint16_t btim_period)
|
|
|
|
|
|
{
|
|
|
|
|
|
BTIM_Base_InitTypeDef BTIM_InitStructure;
|
|
|
|
|
|
|
|
|
|
|
|
BTIM_InitStructure.MDIS = ENABLE; // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
BTIM_InitStructure.FreezingMode = DISABLE;
|
|
|
|
|
|
BTIM_InitStructure.ChainedMode = DISABLE;
|
|
|
|
|
|
LHL_BTIM_Base_Init(BTIM, &BTIM_InitStructure);
|
|
|
|
|
|
LHL_BTIM_SetPeriod(BTIMER_1,btim_period );
|
|
|
|
|
|
LHL_BTIM_ITConfig(BTIMER_1, ENABLE);
|
|
|
|
|
|
// NVIC_EnableIRQ(TIM6_IRQn); // BTIMER1<52><31>ӦTIM6_IRQ
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> BTIM1 <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param btim_period: <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
* @example StartBtimer1(3999);
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void StartBtimer1(uint16_t btim_period)
|
|
|
|
|
|
{
|
|
|
|
|
|
BTIM1_Init(btim_period);
|
|
|
|
|
|
BTIM->TCTRL_1 |= BTIM_TCTRL_TEN_Msk; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> LHL_BTIM_Start(BTIMER_0,btim_period,0);
|
|
|
|
|
|
// NVIC_EnableIRQ(TIM6_IRQn); // BTIMER1<52><31>ӦTIM6_IRQ
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief ֹͣ BTIM1 <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>λ TEN<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param <EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example StopBtimer1();
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void StopBtimer1(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
// LHL_BTIM_Stop(BTIMER_1);
|
|
|
|
|
|
BTIM->TCTRL_1 &= ~BTIM_TCTRL_TEN_Msk;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
/*-=====================================================================================================
|
|
|
|
|
|
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>жϻص<CFBB>
|
|
|
|
|
|
-=====================================================================================================*/
|
|
|
|
|
|
|
|
|
|
|
|
static btimer_irq_callback_t btim0_irq_callback ,btim1_irq_callback ;
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief ע<EFBFBD><EFBFBD> BTIM0/BTIM1 <EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param timer: BTIMER_0 <EFBFBD><EFBFBD> BTIMER_1
|
|
|
|
|
|
* @param btim_irq_callback: <EFBFBD>û<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>루<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note ע<EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ NVIC <EFBFBD>жϡ<EFBFBD>
|
|
|
|
|
|
* @example Btimer_register_irq_callback(BTIMER_0, my_btim_callback);
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void Btimer_register_irq_callback(BTIM_ID_t timer, btimer_irq_callback_t btim_irq_callback)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(timer == BTIMER_0) {btim0_irq_callback = btim_irq_callback; LHL_BTIM_ClearPending(BTIMER_0);NVIC_EnableIRQ(TIM5_IRQn);}
|
|
|
|
|
|
else if(timer == BTIMER_1) {btim1_irq_callback = btim_irq_callback; LHL_BTIM_ClearPending(BTIMER_1);NVIC_EnableIRQ(TIM6_IRQn);}
|
|
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief BTIM0 <EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ TIM5_IRQn<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void TIM5_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (btim0_irq_callback != NULL) btim0_irq_callback();// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
LHL_BTIM_Stop(BTIMER_0); // ֹͣBTIM
|
|
|
|
|
|
LHL_BTIM_ClearPending(BTIMER_0); // <20><><EFBFBD>жϱ<D0B6>־
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief BTIM1 <EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ TIM6_IRQn<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD>
|
|
|
|
|
|
**/
|
2026-03-20 21:16:58 +08:00
|
|
|
|
void TIM6_IRQHandler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (btim1_irq_callback != NULL) btim1_irq_callback();// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
LHL_BTIM_Stop(BTIMER_1); // ֹͣBTIM
|
|
|
|
|
|
LHL_BTIM_ClearPending(BTIMER_1); // <20><><EFBFBD>жϱ<D0B6>־
|
|
|
|
|
|
}
|