Esempio n. 1
0
void Timerx_Init(GPTM_TypeDef* GPTMx,u16 arr,u16 psc)
{
   GPTM_TimeBaseInitTypeDef  GPTM_TimeBaseStructure;
	//NVIC_InitTypeDef NVIC_InitStructure;
	Assert_Param(IS_GPTM(GPTMx));
		if(GPTMx==GPTM0)
	{
		CKCU_APBPerip1ClockConfig(CKCU_APBEN1_GPTM0,ENABLE);
	}
	else if(GPTMx==GPTM1)
	{
		CKCU_APBPerip1ClockConfig(CKCU_APBEN1_GPTM1,ENABLE);
	}
	
	GPTM_DeInit(GPTMx);

	GPTM_TimeBaseStructure.CounterReload = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值	 计数到5000为500ms
	GPTM_TimeBaseStructure.Prescaler =(7200-1); //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  
	GPTM_TimeBaseStructure.PSCReloadTime = GPTM_PSC_RLD_UPDATE;//无事件发生,等待下一次重载//TIM 中断源
	GPTM_TimeBaseStructure.CounterMode = GPTM_CNT_MODE_UP;  //TIM向上计数模式
	GPTM_TimeBaseInit(GPTMx, &GPTM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
 
	/* TIM IT enable */
	GPTM_IntConfig(  //使能或者失能指定的TIM中断
		GPTMx, //TIMx
		TIM_IT_Update  |  //TIM 中断源
		TIM_IT_Trigger,   //TIM 触发中断源 
		ENABLE  //使能
		);
		/* Enable the TIMx global Interrupt */

	if(GPTMx==GPTM0)
	{
		NVIC_SetPriority(GPTM0_IRQn,NVIC_EncodePriority(5,0,3));
		NVIC_EnableIRQ(GPTM0_IRQn);
		GPTM_IntConfig(GPTM0,GPTM_INT_UEV,ENABLE);
	}
	else
	if(GPTMx==GPTM1)
	{
		NVIC_SetPriority(GPTM1_IRQn,NVIC_EncodePriority(5,0,3));
		NVIC_EnableIRQ(GPTM1_IRQn);
		GPTM_IntConfig(GPTM1,GPTM_INT_UEV,ENABLE);
	}		
		/*
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
	NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
*/
	GPTM_Cmd(GPTMx, ENABLE);  //使能TIMx外设
							 
}
Esempio n. 2
0
/*********************************************************************************************************//**
* @brief  Configures GPTM0 for time estimate.
* @retval None
***********************************************************************************************************/
void GPTM_Configuration(void)
{
	GPTM_TimeBaseInitTypeDef TimeBaseInit;

	TimeBaseInit.CounterMode = GPTM_CNT_MODE_UP;
	TimeBaseInit.CounterReload = SystemCoreClock / (1000 * 2);
	TimeBaseInit.Prescaler = 1;
	TimeBaseInit.PSCReloadTime = GPTM_PSC_RLD_IMMEDIATE;
	GPTM_TimeBaseInit(GPTM0, &TimeBaseInit);
	GPTM_Cmd(GPTM0, ENABLE);
}