gd32 定时器时钟_GD32-GD32F190定时器的使用-PWM占空比的调节-电路城论坛 - 电子工程师学习交流园地...

void TIMER_Configuration(void)

{

/* -----------------------------------------------------------------------

TIMER2 Configuration: generate 3 PWM signals with 3 different duty cycles:

TIMER2CLK = SystemCoreClock / 72 = 1MHz

TIMER2 Channel2 duty cycle = (4000/ 16000)* 100  = 25%

TIMER2 Channel3 duty cycle = (8000/ 16000)* 100  = 50%

TIMER2 Channel4 duty cycle = (12000/ 16000)* 100 = 75%

----------------------------------------------------------------------- */

GPIO_InitPara GPIO_InitStructure;

TIMER_BaseInitPara TIMER_TimeBaseStructure;

TIMER_OCInitPara  TIMER_OCInitStructure;

NVIC_InitPara NVIC_InitStructure;

RCC_AHBPeriphClock_Enable( RCC_AHBPERIPH_GPIOB, ENABLE);

/* TIMERS clock enable */

RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_TIMER1|RCC_APB2PERIPH_TIMER15|RCC_APB2PERIPH_TIMER16|RCC_APB2PERIPH_TIMER17,ENABLE);

RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER2|RCC_APB1PERIPH_TIMER3|RCC_APB1PERIPH_TIMER6|RCC_APB1PERIPH_TIMER14,ENABLE);

/*Configure PB3 PB10 PB11(TIMER2 CH2 CH3 CH4) as alternate function*/

GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_3|GPIO_PIN_10|GPIO_PIN_11;

GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;

GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;

GPIO_InitStructure.GPIO_PuPd  = GPIO_PUPD_NOPULL;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_PinAFConfig(GPIOB,GPIO_PINSOURCE3,GPIO_AF_2);

GPIO_PinAFConfig(GPIOB,GPIO_PINSOURCE10,GPIO_AF_2);

GPIO_PinAFConfig(GPIOB,GPIO_PINSOURCE11,GPIO_AF_2);

/* TIMER2  configuration */

TIMER_DeInit(TIMER2);

TIMER_TimeBaseStructure.TIMER_Prescaler     = 71;

TIMER_TimeBaseStructure.TIMER_CounterMode   = TIMER_COUNTER_UP;

TIMER_TimeBaseStructure.TIMER_Period        = 15999;

TIMER_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;

TIMER_BaseInit(TIMER2,&TIMER_TimeBaseStructure);

TIMER_INTConfig(TIMER2,TIMER_INT_UPDATE,ENABLE);

/* CH2,CH3 and CH4 Configuration in PWM mode */

TIMER_OCInitStructure.TIMER_OCMode      = TIMER_OC_MODE_PWM1;

TIMER_OCInitStructure.TIMER_OCPolarity  = TIMER_OC_POLARITY_HIGH;

TIMER_OCInitStructure.TIMER_OutputState = TIMER_OUTPUT_STATE_ENABLE;

TIMER_OCInitStructure.TIMER_Pulse = 39;

TIMER_OC2_Init(TIMER2, &TIMER_OCInitStructure);

TIMER_OC2_Preload(TIMER2,TIMER_OC_PRELOAD_DISABLE);

TIMER_OCInitStructure.TIMER_Pulse = 79;

TIMER_OC3_Init(TIMER2, &TIMER_OCInitStructure);

TIMER_OC3_Preload(TIMER2,TIMER_OC_PRELOAD_DISABLE);

TIMER_OCInitStructure.TIMER_Pulse = 119;

TIMER_OC4_Init(TIMER2, &TIMER_OCInitStructure);

TIMER_OC4_Preload(TIMER2,TIMER_OC_PRELOAD_DISABLE);

/* Auto-reload preload enable */

TIMER_CARLPreloadConfig(TIMER2,ENABLE);

/* TIMER enable counter*/

TIMER_Enable( TIMER2, ENABLE );

NVIC_PRIGroup_Enable(NVIC_PRIGROUP_1);

NVIC_InitStructure.NVIC_IRQ=TIMER2_IRQn;

NVIC_InitStructure.NVIC_IRQPreemptPriority=0;

NVIC_InitStructure.NVIC_IRQSubPriority=1;

NVIC_InitStructure.NVIC_IRQEnable=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值