mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-22 17:12:55 +08:00
437 lines
14 KiB
C
437 lines
14 KiB
C
/******************************************************************************************************************************************
|
||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>: SWM320_timr.c
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: SWM320<32><30>Ƭ<EFBFBD><C6AC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>/<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||
* <20>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>: V1.1.0 2017<31><37>10<31><30>25<32><35>
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼:
|
||
*
|
||
*
|
||
*******************************************************************************************************************************************
|
||
* @attention
|
||
*
|
||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||
* -ECTION WITH THEIR PRODUCTS.
|
||
*
|
||
* COPYRIGHT 2012 Synwit Technology
|
||
*******************************************************************************************************************************************/
|
||
#include "SWM320.h"
|
||
#include "SWM320_timr.h"
|
||
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_Init()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: TIMR<4D><52>ʱ<EFBFBD><CAB1>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чֵ<D0A7><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* uint32_t mode TIMR_MODE_TIMER <20><>ʱ<EFBFBD><CAB1>ģʽ TIMR_MODE_COUNTER <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||
* uint32_t period <09><>ʱ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* uint32_t int_en <09>ж<EFBFBD>ʹ<EFBFBD><CAB9>
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t period, uint32_t int_en)
|
||
{
|
||
SYS->CLKEN |= (0x01 << SYS_CLKEN_TIMR_Pos);
|
||
|
||
TIMR_Stop(TIMRx); //һЩ<D2BB>ؼ<EFBFBD><D8BC>Ĵ<EFBFBD><C4B4><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>ֹͣʱ<D6B9><CAB1><EFBFBD><EFBFBD>
|
||
|
||
TIMRx->CTRL &= ~TIMR_CTRL_CLKSRC_Msk;
|
||
TIMRx->CTRL |= mode << TIMR_CTRL_CLKSRC_Pos;
|
||
|
||
TIMRx->LDVAL = period;
|
||
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR0_Pos); //ʹ<><CAB9><EFBFBD>ж<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR0_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR0_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR0_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR1_Pos);
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR1_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR1_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR1_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR2_Pos);
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR2_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR2_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR2_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR3_Pos);
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR3_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR3_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR3_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR4_Pos);
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR4_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR4_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR4_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->IF = (1 << TIMRG_IF_TIMR5_Pos);
|
||
TIMRG->IE &= ~TIMRG_IE_TIMR5_Msk;
|
||
TIMRG->IE |= (int_en << TIMRG_IE_TIMR5_Pos);
|
||
|
||
if(int_en) NVIC_EnableIRQ(TIMR5_IRQn);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_Start()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʼֵ<CABC><D6B5>ʼ<EFBFBD><CABC>ʱ/<2F><><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_Start(TIMR_TypeDef * TIMRx)
|
||
{
|
||
TIMRx->CTRL |= TIMR_CTRL_EN_Msk;
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_Stop()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_Stop(TIMR_TypeDef * TIMRx)
|
||
{
|
||
TIMRx->CTRL &= ~TIMR_CTRL_EN_Msk;
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_Halt()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><>ͣ<EFBFBD><CDA3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_Halt(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR0_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR1_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR2_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR3_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR4_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->HALT |= (0x01 << TIMRG_HALT_TIMR5_Pos);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_Resume()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09>ָ<EFBFBD><D6B8><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_Resume(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR0_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR1_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR2_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR3_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR4_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->HALT &= ~(0x01 << TIMRG_HALT_TIMR5_Pos);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_SetPeriod()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD>ö<EFBFBD>ʱ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* uint32_t period <09><>ʱ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_SetPeriod(TIMR_TypeDef * TIMRx, uint32_t period)
|
||
{
|
||
TIMRx->LDVAL = period;
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_GetPeriod()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><>ȡ<EFBFBD><C8A1>ʱ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: uint32_t <09><>ǰ<EFBFBD><C7B0>ʱ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
uint32_t TIMR_GetPeriod(TIMR_TypeDef * TIMRx)
|
||
{
|
||
return TIMRx->LDVAL;
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_GetCurValue()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ֵ
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: uint32_t <09><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ֵ
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
uint32_t TIMR_GetCurValue(TIMR_TypeDef * TIMRx)
|
||
{
|
||
return TIMRx->CVAL;
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_INTEn()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: ʹ<><CAB9><EFBFBD>ж<EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_INTEn(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR0_Pos);
|
||
NVIC_EnableIRQ(TIMR0_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR1_Pos);
|
||
NVIC_EnableIRQ(TIMR1_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR2_Pos);
|
||
NVIC_EnableIRQ(TIMR2_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR3_Pos);
|
||
NVIC_EnableIRQ(TIMR3_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR4_Pos);
|
||
NVIC_EnableIRQ(TIMR4_IRQn);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->IE |= (0x01 << TIMRG_IE_TIMR5_Pos);
|
||
NVIC_EnableIRQ(TIMR5_IRQn);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_INTDis()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_INTDis(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR0_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR1_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR2_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR3_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR4_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->IE &= ~(0x01 << TIMRG_IE_TIMR5_Pos);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_INTClr()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void TIMR_INTClr(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR0_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR1_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR2_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR3_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR4_Pos);
|
||
break;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
TIMRG->IF = (0x01 << TIMRG_IF_TIMR5_Pos);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: TIMR_INTStat()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><>ȡ<EFBFBD>ж<EFBFBD>״̬
|
||
* <20><> <20><>: TIMR_TypeDef * TIMRx ָ<><D6B8>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5><EFBFBD><EFBFBD>TIMR0<52><30>TIMR1<52><31>TIMR2<52><32>TIMR3<52><33>TIMR4<52><34>TIMR5
|
||
* <20><> <20><>: uint32_t 0 TIMRxδ<78><CEB4><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> 1 TIMRx<52><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
uint32_t TIMR_INTStat(TIMR_TypeDef * TIMRx)
|
||
{
|
||
switch((uint32_t)TIMRx)
|
||
{
|
||
case ((uint32_t)TIMR0):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR0_Msk) ? 1 : 0;
|
||
|
||
case ((uint32_t)TIMR1):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR1_Msk) ? 1 : 0;
|
||
|
||
case ((uint32_t)TIMR2):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR2_Msk) ? 1 : 0;
|
||
|
||
case ((uint32_t)TIMR3):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR3_Msk) ? 1 : 0;
|
||
|
||
case ((uint32_t)TIMR4):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR4_Msk) ? 1 : 0;
|
||
|
||
case ((uint32_t)TIMR5):
|
||
return (TIMRG->IF & TIMRG_IF_TIMR5_Msk) ? 1 : 0;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Pulse_Init()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||
* <20><> <20><>: uint32_t pulse PULSE_LOW <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PULSE_HIGH <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* uint32_t int_en <09>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void Pulse_Init(uint32_t pulse, uint32_t int_en)
|
||
{
|
||
SYS->CLKEN |= (0x01 << SYS_CLKEN_TIMR_Pos);
|
||
|
||
TIMRG->PCTRL = (0 << TIMRG_PCTRL_CLKSRC_Pos) | // ϵͳʱ<CDB3><CAB1><EFBFBD><EFBFBD>Ϊʱ<CEAA><CAB1>Դ
|
||
(pulse << TIMRG_PCTRL_HIGH_Pos) |
|
||
(0 << TIMRG_PCTRL_EN_Pos);
|
||
|
||
TIMRG->IE |= (1 << TIMRG_IE_PULSE_Pos); //ʹ<>ܲ<EFBFBD><DCB2>ܲ<EFBFBD>ѯ<EFBFBD>жϱ<D0B6>־
|
||
|
||
if(int_en) NVIC_EnableIRQ(PULSE_IRQn);
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Pulse_Start()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><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><D4B6>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: <20><>
|
||
* <20><> <20><>: <20><>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
void Pulse_Start(void)
|
||
{
|
||
TIMRG->PCTRL |= (1 << TIMRG_PCTRL_EN_Pos);
|
||
}
|
||
|
||
/******************************************************************************************************************************************
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Pulse_Done()
|
||
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20><> <20><>: <20><>
|
||
* <20><> <20><>: uint32_t 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||
* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||
******************************************************************************************************************************************/
|
||
uint32_t Pulse_Done(void)
|
||
{
|
||
if(TIMRG->IF & TIMRG_IF_PULSE_Msk)
|
||
{
|
||
TIMRG->IF = TIMRG_IF_PULSE_Msk; // <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||
|
||
return 1;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|