定时器8属于高级定时器,只存在于大容量产品的103系列中,定时器8输出PWM波形时与通用定时器2、3、4、5不同,必须同时开启主输出(TIM8->BDTR|=0x8000;)才能产生PWM波,其配置如下:
1 /********************************************* 2 函数名称:void TIM4_PWM_Init(u16 arr,u16 psc) 3 功 能:通用TIM4 CH1(PB6) CH2(PB7)PWM输出初始化 4 入 参:arr:自动重装值。 5 psc:时钟预分频数 6 返 回:无 7 【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 ) 8 *********************************************/ 9 void TIM4_PWM_Init(u16 arr,u16 psc) 10 { 11 RCC->APB1ENR|=1<<2; //TIM4时钟使能 12 RCC->APB2ENR|=1<<3; //使能PORTB时钟 13 14 GPIOB->CRL&=0X00FFFFFF; //PB6 7 输出 15 GPIOB->CRL|=0XBB000000; //复用功能输出 16 17 TIM4->ARR=arr; //设定计数器自动重装值 18 TIM4->PSC=psc; //预分频器分频设置 19 20 TIM4->CCMR1|=6<<4; //CH1 PWM1模式 21 //6: PWM1模式, 正脉冲 22 //7: PWM2模式, 负脉冲 23 TIM4->CCMR1|=1<<3; //CH1 预装载使能 24 TIM4->CCER|=1<<0; //OC1 输出使能 25 26 TIM4->CCMR1|=6<<12; //CH2 PWM1模式 27 TIM4->CCMR1|=1<<11; //CH2 预装载使能 28 TIM4->CCER|=1<<4; //OC2 输出使能 29 30 TIM4->CR1=0x0080; //ARPE使能 31 TIM4->CR1|=0x01; //使能定时器4 32 } 33 /********************************************* 34 函数名称:TIM8_PWM_Init 35 功 能:通用TIM8 CH1(PC6) CH2(PC7)PWM输出初始化 36 入 参:arr:自动重装值。 37 psc:时钟预分频数 38 返 回:无 39 【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 ) 40 *********************************************/ 41 void TIM8_PWM_Init(u16 arr,u16 psc) 42 { 43 RCC->APB2ENR|=1<<13; //TIM8时钟使能 44 RCC->APB2ENR|=1<<4; //使能PORTC时钟 45 46 GPIOC->CRL&=0X00FFFFFF; //PC6 7 输出 47 GPIOC->CRL|=0XBB000000; //复用功能输出 48 49 TIM8->ARR=arr; //设定计数器自动重装值 50 TIM8->PSC=psc; //预分频器分频设置 51 52 TIM8->CCMR1|=6<<4; //CH1 PWM1模式 53 //6: PWM1模式, 正脉冲 54 //7: PWM2模式, 负脉冲 55 TIM8->CCMR1|=1<<3; //CH1 预装载使能 56 TIM8->CCER|=1<<0; //OC1 输出使能 57 58 TIM8->CCMR1|=6<<12; //CH2 PWM1模式 59 TIM8->CCMR1|=1<<11; //CH2 预装载使能 60 TIM8->CCER|=1<<4; //OC2 输出使能 61 62 TIM8->CR1=0x0080; //ARPE使能 63 TIM8->BDTR|=0x8000; //主输出使能 64 TIM8->CR1|=0x01; //使能定时器8 65 }
原文地址:https://www.cnblogs.com/ivan0512/p/8146470.html
时间: 2024-11-07 14:15:30