|
此处使用CX32L003 TIM1(高级定时器)的PWM初始化 4路pwm,IO复用引脚使用的是PC6(TIM1_CH1),PD2(TIM1_CH2),PC3(TIM1_CH3),PC4(TIM1_CH4)- RCC->HCLKEN |= 1 << 2;
- RCC->HCLKEN |= 1 << 3;
- RCC->PCLKEN |= 1 << 10;//RCC_TIM1
-
- GPIOC->AFR |= 0X01000000;//TIM1_CH1
- GPIOC->DIRCR |= 1 << 6;//pc6
- GPIOC->OTYPER &= ~(1 << 6);
- ///GPIOC->PUPDR |= 2 << 12;
- GPIOC->SLEWCR &= ~(1 << 6);
-
-
- GPIOD->AFR |= 0X00000100;//TIM1_CH2
- GPIOD->DIRCR |= 1 << 2;//PD2
- GPIOD->OTYPER &= ~(1 << 2);
- ///GPIOD->PUPDR |= 2 << 4;
- GPIOD->SLEWCR &= ~(1 << 2);
-
-
- GPIOC->AFR |= 0X00001000;//TIM3_CH1
- GPIOC->DIRCR |= 1 << 3;//PC3
- GPIOC->OTYPER &= ~(1 << 3);
- ///GPIOC->PUPDR |= 2 << 6;
- GPIOC->SLEWCR &= ~(1 << 3);
-
- GPIOC->AFR |= 0X00010000;//TIM4_CH1
- GPIOC->DIRCR |= 1 << 4;//PC4
- GPIOC->OTYPER &= ~(1 << 4);
- ///GPIOC->PUPDR |= 2 << 8;
- GPIOC->SLEWCR &= ~(1 << 4);
-
- TIM1->ARR = arr;
- TIM1->PSC = psc;
-
- TIM1->CCMR1 |= 6 << 4;//TIM1_CH1 OC_MODE1
- TIM1->CCMR1 |= 1 << 3;//OC_MODE1 enable
-
- TIM1->CCMR1 |= 6 << 12;//TIM1_CH2 OC_MODE1
- TIM1->CCMR1 |= 1 << 11;//OC_MODE2 enable
-
- TIM1->CCMR2 |= 6 << 4;//TIM1_CH3 OC_MODE1
- TIM1->CCMR2 |= 1 << 3;//OC_MODE3 enable
-
- TIM1->CCMR2 |= 6 << 12;//TIM1_CH4 OC_MODE1
- TIM1->CCMR2 |= 1 << 11;//OC_MODE4 enable
- /*
- TIM1->CR1 |= 1<<7;//TIM1 ARP1 enable
- TIM1->CR1 |= 1<<4;//TIM1 计数器向下计数
- */
- TIM1->CCER |= 1 << 0;//OC1 enable
- TIM1->CCER |= 1 << 4;//OC2 enable
- TIM1->CCER |= 1 << 8;//OC3 enable
- TIM1->CCER |= 1 << 12;//OC4 enable
-
- TIM1->CCR1 = TIM1_CH1_PULSEWIDTH;
- TIM1->CCR2 = TIM1_CH2_PULSEWIDTH;
- TIM1->CCR3 = TIM1_CH3_PULSEWIDTH;
- TIM1->CCR4 = TIM1_CH4_PULSEWIDTH;
-
- TIM1->BDTR |= 1 << 15;
-
- ///TIM1->CR1 = 0x0080;//ARPE enable
-
- TIM1->CR1 |= 1 << 0;//TIM1 enable
复制代码
|
|