161 lines
6.1 KiB
C
161 lines
6.1 KiB
C
|
|
/*---------------------------------------------------------------------*/
|
|||
|
|
/* --- STC MCU Limited ------------------------------------------------*/
|
|||
|
|
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
|
|||
|
|
/* --- Mobile: (86)13922805190 ----------------------------------------*/
|
|||
|
|
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
|
|||
|
|
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
|
|||
|
|
/* --- Web: www.STCMCU.com --------------------------------------------*/
|
|||
|
|
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
|
|||
|
|
/* --- QQ: 800003751 -------------------------------------------------*/
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˴<C3B4><CBB4><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>STC<54><43><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*---------------------------------------------------------------------*/
|
|||
|
|
|
|||
|
|
/************* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> **************
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ΪSTC8ϵ<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>.
|
|||
|
|
|
|||
|
|
******************************************/
|
|||
|
|
|
|||
|
|
#include "timer.h"
|
|||
|
|
u32 systick_1ms=0;
|
|||
|
|
/********************* Timer0<72>жϺ<D0B6><CFBA><EFBFBD>************************/
|
|||
|
|
void timer0_int (void) interrupt TIMER0_VECTOR
|
|||
|
|
{
|
|||
|
|
P67 = ~P67;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/********************* Timer1<72>жϺ<D0B6><CFBA><EFBFBD>************************/
|
|||
|
|
void timer1_int (void) interrupt TIMER1_VECTOR
|
|||
|
|
{
|
|||
|
|
P66 = ~P66;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/********************* Timer2<72>жϺ<D0B6><CFBA><EFBFBD>************************/
|
|||
|
|
void timer2_int (void) interrupt TIMER2_VECTOR
|
|||
|
|
{
|
|||
|
|
systick_1ms++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/********************* Timer3<72>жϺ<D0B6><CFBA><EFBFBD>************************/
|
|||
|
|
void timer3_int (void) interrupt TIMER3_VECTOR
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/********************* Timer4<72>жϺ<D0B6><CFBA><EFBFBD>************************/
|
|||
|
|
void timer4_int (void) interrupt TIMER4_VECTOR
|
|||
|
|
{
|
|||
|
|
P63 = ~P63;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//========================================================================
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: TIMx: <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>,<2C><><EFBFBD>ο<EFBFBD>timer.h<><68><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0, <20>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1,<2C><><EFBFBD><EFBFBD>2.
|
|||
|
|
// <20>汾: V1.0, 2012-10-22
|
|||
|
|
//========================================================================
|
|||
|
|
u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
|
|||
|
|
{
|
|||
|
|
if(TIM > Timer4) return 1; //<2F>ղ<EFBFBD><D5B2><EFBFBD>
|
|||
|
|
|
|||
|
|
if(TIM == Timer0)
|
|||
|
|
{
|
|||
|
|
Timer0_Stop(); //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
if(TIMx->TIM_Interrupt == ENABLE) Timer0_InterruptEnable(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
else Timer0_InterruptDisable(); //<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if(TIMx->TIM_Priority > Priority_3) return 2; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
Timer0_Priority(TIMx->TIM_Priority); //ָ<><D6B8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>(<28>͵<EFBFBD><CDB5><EFBFBD>) Priority_0,Priority_1,Priority_2,Priority_3
|
|||
|
|
|
|||
|
|
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
TMOD = (TMOD & ~0x30) | TIMx->TIM_Mode; //<2F><><EFBFBD><EFBFBD>ģʽ,0: 16λ<36>Զ<EFBFBD><D4B6><EFBFBD>װ, 1: 16λ<36><CEBB>ʱ/<2F><><EFBFBD><EFBFBD>, 2: 8λ<38>Զ<EFBFBD><D4B6><EFBFBD>װ
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer0_12T(); //12T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer0_1T(); //1T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer0_AsCounter(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
|
else Timer0_AsTimer(); //<2F><>ʱ
|
|||
|
|
if(TIMx->TIM_ClkOut == ENABLE) Timer0_CLKO_Enable(); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
else Timer0_CLKO_Disable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
T0_Load(TIMx->TIM_Value);
|
|||
|
|
if(TIMx->TIM_Run == ENABLE) Timer0_Run(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
return 0; //<2F>ɹ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(TIM == Timer1)
|
|||
|
|
{
|
|||
|
|
Timer1_Stop(); //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
if(TIMx->TIM_Interrupt == ENABLE) Timer1_InterruptEnable(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
else Timer1_InterruptDisable(); //<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if(TIMx->TIM_Priority > Priority_3) return 2; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
Timer1_Priority(TIMx->TIM_Priority); //ָ<><D6B8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>(<28>͵<EFBFBD><CDB5><EFBFBD>) Priority_0,Priority_1,Priority_2,Priority_3
|
|||
|
|
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
TMOD = (TMOD & ~0x30) | TIMx->TIM_Mode; //<2F><><EFBFBD><EFBFBD>ģʽ,0: 16λ<36>Զ<EFBFBD><D4B6><EFBFBD>װ, 1: 16λ<36><CEBB>ʱ/<2F><><EFBFBD><EFBFBD>, 2: 8λ<38>Զ<EFBFBD><D4B6><EFBFBD>װ
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer1_12T(); //12T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer1_1T(); //1T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer1_AsCounter(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
|
else Timer1_AsTimer(); //<2F><>ʱ
|
|||
|
|
if(TIMx->TIM_ClkOut == ENABLE) Timer1_CLKO_Enable(); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
else Timer1_CLKO_Disable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
T1_Load(TIMx->TIM_Value);
|
|||
|
|
if(TIMx->TIM_Run == ENABLE) Timer1_Run(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
return 0; //<2F>ɹ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(TIM == Timer2) //Timer2,<2C>̶<EFBFBD>Ϊ16λ<36>Զ<EFBFBD><D4B6><EFBFBD>װ, <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Timer2_Stop(); //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
if(TIMx->TIM_Interrupt == ENABLE) Timer2_InterruptEnable(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
else Timer2_InterruptDisable(); //<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer2_12T(); //12T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer2_1T(); //1T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer2_AsCounter(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
|
else Timer2_AsTimer(); //<2F><>ʱ
|
|||
|
|
if(TIMx->TIM_ClkOut == ENABLE) Timer2_CLKO_Enable(); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
else Timer2_CLKO_Disable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
T2_Load(TIMx->TIM_Value);
|
|||
|
|
if(TIMx->TIM_Run == ENABLE) Timer2_Run(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
return 0; //<2F>ɹ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(TIM == Timer3) //Timer3,<2C>̶<EFBFBD>Ϊ16λ<36>Զ<EFBFBD><D4B6><EFBFBD>װ, <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Timer3_Stop(); //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
if(TIMx->TIM_Interrupt == ENABLE) Timer3_InterruptEnable(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
else Timer3_InterruptDisable(); //<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer3_12T(); //12T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer3_1T(); //1T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer3_AsCounter(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
|
else Timer3_AsTimer(); //<2F><>ʱ
|
|||
|
|
if(TIMx->TIM_ClkOut == ENABLE) Timer3_CLKO_Enable(); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
else Timer3_CLKO_Disable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
T3_Load(TIMx->TIM_Value);
|
|||
|
|
if(TIMx->TIM_Run == ENABLE) Timer3_Run(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
return 0; //<2F>ɹ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(TIM == Timer4) //Timer3,<2C>̶<EFBFBD>Ϊ16λ<36>Զ<EFBFBD><D4B6><EFBFBD>װ, <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Timer4_Stop(); //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
if(TIMx->TIM_Interrupt == ENABLE) Timer4_InterruptEnable(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
else Timer4_InterruptDisable(); //<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer4_12T(); //12T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer4_1T(); //1T
|
|||
|
|
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer4_AsCounter(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
|
else Timer4_AsTimer(); //<2F><>ʱ
|
|||
|
|
if(TIMx->TIM_ClkOut == ENABLE) Timer4_CLKO_Enable(); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
else Timer4_CLKO_Disable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
T4_Load(TIMx->TIM_Value);
|
|||
|
|
if(TIMx->TIM_Run == ENABLE) Timer4_Run(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
return 0; //<2F>ɹ<EFBFBD>
|
|||
|
|
}
|
|||
|
|
return 2; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
}
|