GD32f303之定时器配置

一、简介

  本文档采样的芯片型号为GD32F303RCT6。要求定时器配置中断周期为1ms,定时器时钟频率120MHz。

二、GD32F303系统架构

由图可见:APB1 总线的最高速度限制为60MHz,APB2 总线可全速运行(依器件型号而定,最
高可达120MHz)。主频最高120MHz。

注意: 当APB1、APB2的prescaler值不为1时,该总线上的时钟频率为分频之后频率的2倍。上图中APB1最小值为2,APB2最小值为1,则TIMER1时钟频率是其他外设时钟频率的2倍(60MHz*2)。

三、TIMER1配置代码示例

/*******************************************************************************
* function name   TIM1_Configuration
* brief           TIM_Configuration program.
* param[in]       period: 2000
* param[out]      None
* retval          None
* attention       1000us中断周期
*******************************************************************************/
void TIM2_Configuration(unsigned short period)     //T = 2000/(60Hz*2/60)
{
	timer_parameter_struct timer_initpara;
    rcu_periph_clock_enable(RCU_TIMER1);		  /* 使能TIMER1时钟 */
	
	/* 初始化TIMER相关结构体默认值参数 */
    timer_struct_para_init(&timer_initpara);
    
    /* TIMER1 初始化配置 */
	timer_deinit(TIMER1);
	timer_initpara.period            = period;				      /* 自动重装载寄存器周期的值(计数值) */
																											      
    /* 累计 TIM_Period个频率后产生一个更新或者中断 */
    timer_initpara.alignedmode 	     = TIMER_COUNTER_EDGE;       /* 对齐模式 */
    timer_initpara.prescaler         = (60 - 1);			     /* 时钟预分频数   例如:时钟频率=60MHZ/(时钟预分频+1) */
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;		 /* 采样分频 */
	timer_initpara.counterdirection  = TIMER_COUNTER_UP;	     /* 向上计数模式 */
    timer_init(TIMER1,&timer_initpara);

	timer_enable(TIMER1);
	
	nvic_irq_enable(TIMER1_IRQn, 0, 3);			    /* TIMER1中断设置,抢占优先级0,子优先级3 */
	timer_interrupt_enable(TIMER1,TIMER_INT_UP);	/* 使能更新中断 */ 
}


/* 定时器中断处理函数 */
void TIMER1_IRQHandler(void)
{
    NVIC_DisableIRQ(EXTI5_9_IRQn);	 /**< \brief Disable interrupt source INT1*/

    ......

    timer_interrupt_flag_clear(TIMER1, TIMER_INT_FLAG_UP);     // 清中断

    NVIC_EnableIRQ(EXTI5_9_IRQn);	/**< \brief Enable interrupt source INT1*/

}

-------------------------------------------------------------------------------------------------------------------------------如有问题请联系本人:QQ614139707

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值