差异
This commit is contained in:
@@ -4,10 +4,12 @@
|
||||
//TIMER1
|
||||
-=====================================================================================================*/
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><EFBFBD>APB2_CLK
|
||||
* @param uploadCounter: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ:(1~4000)
|
||||
* @example: StartTimer1(10); // <20><><EFBFBD><EFBFBD>10ms<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
* @brief <20><><EFBFBD><EFBFBD>TIM1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
* @note ʱ<><CAB1>ԴΪAPB2_CLK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽӽ<EFBFBD>1ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>ʽ (APB2_CLK/16000) <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ARR = 16 * uploadCounter ʵ<>֡<EFBFBD>
|
||||
* uploadCounter <20><>ΧΪ 1~4000ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1~4000)
|
||||
* @example: StartTimer1_UIE(10); // <20><><EFBFBD><EFBFBD>10ms<6D><73><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
**/
|
||||
void StartTimer1_UIE(u16 uploadCounter)
|
||||
{
|
||||
@@ -34,11 +36,14 @@ void StartTimer1_UIE(u16 uploadCounter)
|
||||
|
||||
LHL_TIM_Start(TIM1);
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<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>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><EFBFBD>APB2_CLK
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ:(1~4000)
|
||||
* @example: ResetTimer1_UIE(20); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>Ϊ20ms
|
||||
* @brief <EFBFBD><EFBFBD>TIM1<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>ARR<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>
|
||||
* <20><>̬<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CNT
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
|
||||
* @param uploadCounter: <20>µĶ<C2B5>ʱ<EFBFBD><CAB1><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1~4000)
|
||||
* @example: ResetTimer1_UIE(20); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>Ϊ20ms
|
||||
**/
|
||||
void ResetTimer1_UIE( u16 uploadCounter )
|
||||
{
|
||||
@@ -53,17 +58,26 @@ void ResetTimer1_UIE( u16 uploadCounter )
|
||||
TIM1->ARR = (u16)period ; //<2F><EFBFBD>ARR <20><><EFBFBD><EFBFBD>PSC<53><43>Ҫ<EFBFBD>ı䣬<C4B1><E4A3AC><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
LHL_TIM_Start(TIM1); //ȷ<><C8B7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<EFBFBD>ñȽ϶<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><EFBFBD>APB2_CLK
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD>ֵ(1~65535)<29><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ=65535/4000*t
|
||||
* @example: StartTimer1(327); //<2F><><EFBFBD><EFBFBD>20ms<EFBFBD>Ƚ϶<EFBFBD>ʱ<EFBFBD><EFBFBD> 327=65535/4000*20
|
||||
* @brief <20><><EFBFBD><EFBFBD>TIM1<EFBFBD>Ƚ<EFBFBD>ģʽ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚϣ<EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ʱ<><CAB1>ԴΪAPB2_CLK<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>Ϊ251<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ<EFBFBD>̶<EFBFBD>Ϊ64000<EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>Ϊ APB2_CLK / (251+1) <20><> 16kHz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 64000/16kHz = 4s<34><73>
|
||||
* <20>Ƚ<EFBFBD>ֵ uploadCounter Ӧ<><D3A6> 1~64000 ֮<>䣬<EFBFBD><E4A3AC>Ӧ<EFBFBD>Ƚ<EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ uploadCounter / 16kHz <20><><EFBFBD>롣
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD>
|
||||
* @param uploadCounter: <20>Ƚ<EFBFBD>ֵ (1~64000)<29><><EFBFBD>軻<EFBFBD><E8BBBB>ΪĿ<CEAA><C4BF>ʱ<EFBFBD><CAB1> t(ms) = uploadCounter / 16
|
||||
* @example: StartTimer1_CC1(320); // <20><><EFBFBD><EFBFBD><EFBFBD>Ƚ϶<C8BD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>ֵ320<32><30>Ӧ20ms
|
||||
**/
|
||||
void StartTimer1_CC1(u16 uploadCounter)
|
||||
{
|
||||
if(uploadCounter>64000)uploadCounter = 64000;
|
||||
if(uploadCounter<= 0)uploadCounter = 1;
|
||||
|
||||
TIM_InitTypeDef TIM_InitStructure;
|
||||
TIM_InitStructure.Period = 65535;
|
||||
TIM_InitStructure.Prescaler = 244;
|
||||
// TIM_InitStructure.Period = 65535;
|
||||
// TIM_InitStructure.Prescaler = 244;
|
||||
TIM_InitStructure.Period = 64000;
|
||||
TIM_InitStructure.Prescaler = 251;
|
||||
TIM_InitStructure.ClockDivision = TIM_CKD_DIV1;
|
||||
TIM_InitStructure.CounterMode = TIM_COUNTERMODE_UP;
|
||||
TIM_InitStructure.AutoReloadPreload = DISABLE;
|
||||
@@ -80,11 +94,13 @@ void StartTimer1_CC1(u16 uploadCounter)
|
||||
LHL_TIM_Start(TIM1); /* <20><><EFBFBD><EFBFBD>TIM1 */
|
||||
}
|
||||
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<EFBFBD>ñȽ϶<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TIM1->CNT <20><><EFBFBD>±Ƚ<C2B1>ֵ
|
||||
* @note ʱ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>APB2_CLK
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD>ֵ(1~65535)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ֵ=65535/4000*t
|
||||
* @example: ResetTimer1_CC1(327+TIM1->CNT); // <20>¸<EFBFBD>20ms<6D><73><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD>ж<EFBFBD>
|
||||
* @brief <EFBFBD><EFBFBD>TIM1<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>CCR1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CNT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>αȽ<EFBFBD>ʱ<EFBFBD>̡<EFBFBD>
|
||||
* <20>ʺ<EFBFBD>ʵ<EFBFBD>ֿɱ<D6BF><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>
|
||||
* @param uploadCounter: <20>µıȽ<C4B1>ֵ (1~64000)
|
||||
* @example: ResetTimer1_CC1(327 + TIM1->CNT); // <20>ڵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱԼ20ms<6D><73><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
**/
|
||||
void ResetTimer1_CC1( u16 uploadCounter )
|
||||
{
|
||||
@@ -92,11 +108,13 @@ void ResetTimer1_CC1( u16 uploadCounter )
|
||||
TIM1->SR = (uint16_t)~TIM_IT_CC1;
|
||||
LHL_TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͣ<EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
* @note
|
||||
* @param
|
||||
* @example
|
||||
* @brief ֹͣTIM1<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>TIM1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD>Ƚ<EFBFBD>1/2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>жϱ<D0B6>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>NVIC<49><43>TIM1<4D><31><EFBFBD>ж<EFBFBD>ʹ<EFBFBD>ܡ<EFBFBD>
|
||||
* @param <20><>
|
||||
* @example: StopTimer1(); // ֹͣTIM1
|
||||
**/
|
||||
void StopTimer1(void)
|
||||
{
|
||||
@@ -106,18 +124,12 @@ void StopTimer1(void)
|
||||
LHL_TIM_ITConfig( TIM1, TIM_IT_UPDATE|TIM_IT_CC1|TIM_IT_CC2|TIM_IT_TRIGGER, DISABLE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*-=====================================================================================================
|
||||
//TIMER2
|
||||
-=====================================================================================================*/
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧʱ<D3A6><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><D4B4>APB1_CLK
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ:(1~4000)
|
||||
* @example: StartTimer2(10); // <20><><EFBFBD><EFBFBD>10ms<6D><73><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
**/
|
||||
void StartTimer2_UIE(u16 uploadCounter)
|
||||
{
|
||||
if(uploadCounter>4000)uploadCounter = 4000;
|
||||
@@ -144,12 +156,6 @@ void StartTimer2_UIE(u16 uploadCounter)
|
||||
LHL_TIM_Start(TIM2);
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧʱ<D3A6><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><D4B4>APB1_CLK
|
||||
* @param uploadCounter: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Χ:(1~4000)
|
||||
* @example: ResetTimer2_UIE(20); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>Ϊ20ms
|
||||
**/
|
||||
void ResetTimer2_UIE(u16 uploadCounter)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -164,12 +170,6 @@ void ResetTimer2_UIE(u16 uploadCounter)
|
||||
LHL_TIM_Start(TIM2); //ȷ<><C8B7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief ͣ<>ö<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @note
|
||||
* @param
|
||||
* @example
|
||||
**/
|
||||
void StopTimer2(void)
|
||||
{
|
||||
LHL_TIM_Stop(TIM2);
|
||||
@@ -178,9 +178,12 @@ void StopTimer2(void)
|
||||
LHL_TIM_ITConfig( TIM2, TIM_IT_UPDATE|TIM_IT_CC1|TIM_IT_CC2|TIM_IT_TRIGGER, DISABLE );
|
||||
}
|
||||
|
||||
/*-=====================================================================================================
|
||||
//PWM<57><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
-=====================================================================================================*/
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @brief PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||
* @note ʱ<><CAB1>Դ<EFBFBD><D4B4>APB2_CLK
|
||||
* @param uploadCounter: PWM<57><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>λ<EFBFBD><CEBB>Hz <20><>Χ:(1~400)
|
||||
duty :PWMռ<4D>ձ<EFBFBD> <20><>Χ:(0-100)
|
||||
@@ -242,78 +245,114 @@ void ResetTimer1_PWM(u16 duty)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*-=====================================================================================================
|
||||
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>жϻص<CFBB>
|
||||
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>жϻص<CFBB> - <20><>Դ֧<D4B4><D6A7>
|
||||
-=====================================================================================================*/
|
||||
|
||||
// ΪTIM1<4D><31><EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
static timer_irq_callback_t tim1_update_irq_callback = NULL; // <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB>
|
||||
static timer_irq_callback_t tim1_cc1_irq_callback = NULL; // <20><><EFBFBD><EFBFBD>/<2F>Ƚ<EFBFBD>1<EFBFBD>жϻص<CFBB>
|
||||
static timer_irq_callback_t tim1_cc2_irq_callback = NULL; // <20><><EFBFBD><EFBFBD>/<2F>Ƚ<EFBFBD>2<EFBFBD>жϻص<CFBB>
|
||||
static timer_irq_callback_t tim1_trigger_irq_callback = NULL; // <20><><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB>
|
||||
|
||||
// ΪTIM2<4D><32><EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
static timer_irq_callback_t tim2_update_irq_callback = NULL;
|
||||
static timer_irq_callback_t tim2_cc1_irq_callback = NULL;
|
||||
static timer_irq_callback_t tim2_cc2_irq_callback = NULL;
|
||||
static timer_irq_callback_t tim2_trigger_irq_callback = NULL;
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief <20><>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
|
||||
* @note
|
||||
* @param TIM_TypeDef *timer<65><72>pTIM1 pTIM2 <20><> timer_irq_callback_t tim_irq_callback <20><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @example: Timer_register_irq_callback(pTIM1,callback1);
|
||||
* @brief Ϊָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD>ж<EFBFBD>Դע<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param timer: <20><>ʱ<EFBFBD><CAB1>ָ<EFBFBD><D6B8> (pTIM1 / pTIM2)
|
||||
* @param it_flag: <20>жϱ<D0B6>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ȡֵΪ TIM_IT_UPDATE, TIM_IT_CC1, TIM_IT_CC2, TIM_IT_TRIGGER
|
||||
* @param tim_irq_callback: <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC>ΪNULL<4C><4C>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4>ע<EFBFBD><D7A2>
|
||||
* @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>NVIC<49>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ᴦ<EFBFBD><E1B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դ<EFBFBD>ɶ<EFBFBD><C9B6><EFBFBD>ע<EFBFBD>ᣬ<EFBFBD><E1A3AC><EFBFBD><EFBFBD>Ӱ<EFBFBD>졣
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> it_flag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ͨ<EFBFBD><CDA8>switch<63><68><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļص<C4BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>
|
||||
* @example:
|
||||
* // ΪTIM1<4D><31><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ص<EFBFBD>
|
||||
* Timer_register_irq_callback(pTIM1, TIM_IT_UPDATE, my_update_callback);
|
||||
* // ΪTIM1<4D>Ƚ<EFBFBD>1<EFBFBD>ж<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ص<EFBFBD>
|
||||
* Timer_register_irq_callback(pTIM1, TIM_IT_CC1, my_cc1_callback);
|
||||
**/
|
||||
static timer_irq_callback_t tim1_irq_callback ,tim2_irq_callback;
|
||||
void Timer_register_irq_callback(TIM_TypeDef *timer, timer_irq_callback_t tim_irq_callback)
|
||||
void Timer_register_irq_callback(TIM_TypeDef *timer, uint16_t TIM_IT, timer_irq_callback_t tim_irq_callback)
|
||||
{
|
||||
if(timer == TIM1) {tim1_irq_callback = tim_irq_callback; NVIC_EnableIRQ(TIM1_IRQn);}
|
||||
else if(timer == TIM2) {tim2_irq_callback = tim_irq_callback; NVIC_EnableIRQ(TIM2_IRQn);}
|
||||
if (timer == pTIM1) {
|
||||
switch (TIM_IT) {
|
||||
case TIM_IT_UPDATE: tim1_update_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_CC1: tim1_cc1_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_CC2: tim1_cc2_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_TRIGGER: tim1_trigger_irq_callback= tim_irq_callback; break;
|
||||
default: return;
|
||||
}
|
||||
NVIC_EnableIRQ(TIM1_IRQn);
|
||||
}
|
||||
else if (timer == pTIM2) {
|
||||
switch (TIM_IT) {
|
||||
case TIM_IT_UPDATE: tim2_update_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_CC1: tim2_cc1_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_CC2: tim2_cc2_irq_callback = tim_irq_callback; break;
|
||||
case TIM_IT_TRIGGER: tim2_trigger_irq_callback= tim_irq_callback; break;
|
||||
default: return;
|
||||
}
|
||||
NVIC_EnableIRQ(TIM2_IRQn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><EFBFBD>1<EFBFBD>жϺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ͣ<EFBFBD>
|
||||
* TIM_IT_UPDATE
|
||||
* TIM_IT_CC1
|
||||
* TIM_IT_CC2
|
||||
* TIM_IT_TRIGGER
|
||||
* @brief TIM1ȫ<EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֶ<EFBFBD>Դ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <EFBFBD><EFBFBD>ȡTIM1<EFBFBD><EFBFBD>״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>SR<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>1<EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4>ע<EFBFBD><D7A2><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϿ<D0B6><CFBF><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD>if<69><66><EFBFBD><EFBFBD>
|
||||
* <20>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>SRд<52><D0B4>~irq_type<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>жϱ<D0B6>־<EFBFBD><D6BE>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϡ<D0B6>
|
||||
* @see <20>жϱ<D0B6>־λ<D6BE><CEBB><EFBFBD><EFBFBD> TIM_IT_UPDATE (0x0001), TIM_IT_CC1 (0x0002), TIM_IT_CC2 (0x0004),
|
||||
* TIM_IT_TRIGGER (0x0040)
|
||||
**/
|
||||
void TIM1_IRQHandler(void)
|
||||
{
|
||||
uint16_t irq_type = TIM1->SR ; //<2F>жϱ<D0B6>־
|
||||
|
||||
if (irq_type & TIM_IT_CC1) { // <20><><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD>ж<EFBFBD>
|
||||
if (tim1_irq_callback != NULL) tim1_irq_callback();// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
uint16_t irq_type = TIM1->SR; // <20><>ȡ<EFBFBD>жϱ<EFBFBD>־
|
||||
|
||||
TIM1->SR = (uint16_t)~irq_type; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<EFBFBD>־
|
||||
/*
|
||||
if (LHL_TIM_GetPending(TIM1, TIM_IT_UPDATE)== SET) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>TIM1 Update<74>ж<EFBFBD>
|
||||
{
|
||||
LHL_TIM_ClearPending(TIM1, TIM_IT_UPDATE); // <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
}
|
||||
if (LHL_TIM_GetPending(TIM1, TIM_IT_CC1) == SET) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>TIM1 CC1<43>ж<EFBFBD>
|
||||
{
|
||||
LHL_TIM_ClearPending(TIM1, TIM_IT_CC1); // <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
}
|
||||
if (LHL_TIM_GetPending(TIM1, TIM_IT_CC2) == SET)
|
||||
{
|
||||
LHL_TIM_ClearPending(TIM1, TIM_IT_CC2);
|
||||
}
|
||||
if (LHL_TIM_GetPending(TIM1, TIM_IT_TRIGGER) == SET)
|
||||
{
|
||||
LHL_TIM_ClearPending(TIM1, TIM_IT_TRIGGER);
|
||||
}
|
||||
*/
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>---------------------------------------
|
||||
if ((irq_type & TIM_IT_UPDATE) && tim1_update_irq_callback != NULL) {
|
||||
tim1_update_irq_callback();
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>/<2F>Ƚ<EFBFBD>1<EFBFBD>ж<EFBFBD>---------------------------------
|
||||
if ((irq_type & TIM_IT_CC1) && tim1_cc1_irq_callback != NULL) {
|
||||
tim1_cc1_irq_callback();
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>/<2F>Ƚ<EFBFBD>2<EFBFBD>ж<EFBFBD>---------------------------------
|
||||
if ((irq_type & TIM_IT_CC2) && tim1_cc2_irq_callback != NULL) {
|
||||
tim1_cc2_irq_callback();
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>---------------------------------------
|
||||
if ((irq_type & TIM_IT_TRIGGER) && tim1_trigger_irq_callback != NULL) {
|
||||
tim1_trigger_irq_callback();
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
TIM1->SR = (uint16_t)~irq_type;
|
||||
}
|
||||
|
||||
/**------------------------------------------------------------------------
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><EFBFBD>2<EFBFBD>жϺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief TIM2ȫ<EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֶ<EFBFBD>Դ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ͬTIM1_IRQHandler<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TIM2<4D>ĸ<EFBFBD><C4B8>ж<EFBFBD>Դ<EFBFBD><D4B4>
|
||||
**/
|
||||
void TIM2_IRQHandler(void)
|
||||
{
|
||||
uint16_t irq_type = TIM2->SR ; //<2F>жϱ<D0B6>־
|
||||
|
||||
if (tim2_irq_callback != NULL) tim2_irq_callback();// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
TIM2->SR = (uint16_t)~irq_type; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
|
||||
uint16_t irq_type = TIM2->SR;
|
||||
|
||||
if ((irq_type & TIM_IT_UPDATE) && tim2_update_irq_callback != NULL) {
|
||||
tim2_update_irq_callback();
|
||||
}
|
||||
if ((irq_type & TIM_IT_CC1) && tim2_cc1_irq_callback != NULL) {
|
||||
tim2_cc1_irq_callback();
|
||||
}
|
||||
if ((irq_type & TIM_IT_CC2) && tim2_cc2_irq_callback != NULL) {
|
||||
tim2_cc2_irq_callback();
|
||||
}
|
||||
if ((irq_type & TIM_IT_TRIGGER) && tim2_trigger_irq_callback != NULL) {
|
||||
tim2_trigger_irq_callback();
|
||||
}
|
||||
|
||||
TIM2->SR = (uint16_t)~irq_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user