新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2021-10-17
- 在线时间
- 1 小时
|
1金钱
各位老师好,我用429的模板改了427的代码,要求输出16路PWM,用了TIM1~TIM4的16路PWM通道,但是TIM3和TIM4的8路PWM能够正常输出,但是TIM1和TIM2的8路PWM无法输出,不知道有老师遇到过这个问题的嘛?
void TIM3_PWM_Init(u32 arr,u32 psc)
{
//′Ë2¿·ÖDèêÖ¶ˉDT¸ÄIO¿úéèÖÃ
RCC->APB1ENR|=1<<1; //TIM3ê±Öóê1Äü
RCC->AHB1ENR|=1<<1;//ê1ÄüPORTBê±Öó
RCC->AHB1ENR|=1<<0;//ê1ÄüPORTAê±Öó
GPIO_Set(GPIOB,PIN1|PIN0,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//¸′óÃ1|Äü,éÏà-êä3ö
GPIO_AF_Set(GPIOB,1,2); //PB1,AF2
GPIO_AF_Set(GPIOB,0,2); //PB1,AF2
GPIO_Set(GPIOA,PIN7|PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//¸′óÃ1|Äü,éÏà-êä3ö
GPIO_AF_Set(GPIOA,6,2); //PB1,AF2
GPIO_AF_Set(GPIOA,7,2); //PB1,AF2
TIM3->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉÖØ×°Öμ
TIM3->PSC=psc; //Ô¤·ÖÆμÆ÷2»·ÖÆμ
TIM3->CCMR1|=6<<12; //CH2 PWM1Ä£ê½
TIM3->CCMR1|=1<<11; //CH2 ԤװÔØê1Äü
TIM3->CCMR1|=6<<4; //CH1 PWM1Ä£ê½
TIM3->CCMR1|=1<<3; //CH1 ԤװÔØê1Äü
TIM3->CCMR2|=6<<12; //CH4 PWM1Ä£ê½
TIM3->CCMR2|=1<<11; //CH4 ԤװÔØê1Äü
TIM3->CCMR2|=6<<4; //CH3 PWM1Ä£ê½
TIM3->CCMR2|=1<<3; //CH3 ԤװÔØê1Äü
TIM3->CCER|=1<<0; //OC1 êä3öê1Äü
TIM3->CCER|=1<<4; //OC2 êä3öê1Äü
TIM3->CCER|=1<<8; //OC3 êä3öê1Äü
TIM3->CCER|=1<<12; //OC4 êä3öê1Äü
//TIM3->CCER|=1<<13; //OC4 ¸ßμçƽóDD§
TIM3->CR1|=1<<7; //ARPEê1Äü
TIM3->CR1|=1<<0; //ê1Äü¶¨ê±Æ÷3
}
void TIM4_PWM_Init(u32 arr,u32 psc)
{
//′Ë2¿·ÖDèêÖ¶ˉDT¸ÄIO¿úéèÖÃ
RCC->APB1ENR|=1<<2; //TIM4ê±Öóê1Äü
RCC->AHB1ENR|=1<<1;//ê1ÄüPORTBê±Öó
RCC->AHB1ENR|=1<<0;//ê1ÄüPORTAê±Öó
GPIO_Set(GPIOB,PIN9|PIN8|PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//¸′óÃ1|Äü,éÏà-êä3ö
GPIO_AF_Set(GPIOB,6,2); //PB1,AF2
GPIO_AF_Set(GPIOB,7,2); //PB1,AF2
GPIO_AF_Set(GPIOB,8,2); //PB1,AF2
GPIO_AF_Set(GPIOB,9,2); //PB1,AF2 +
TIM4->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉÖØ×°Öμ
TIM4->PSC=psc; //Ô¤·ÖÆμÆ÷2»·ÖÆμ
TIM4->CCMR1|=6<<12; //CH2 PWM1Ä£ê½
TIM4->CCMR1|=1<<11; //CH2 ԤװÔØê1Äü
TIM4->CCMR1|=6<<4; //CH1 PWM1Ä£ê½
TIM4->CCMR1|=1<<3; //CH1 ԤװÔØê1Äü
TIM4->CCMR2|=6<<12; //CH4 PWM1Ä£ê½
TIM4->CCMR2|=1<<11; //CH4 ԤװÔØê1Äü
TIM4->CCMR2|=6<<4; //CH3 PWM1Ä£ê½
TIM4->CCMR2|=1<<3; //CH3 ԤװÔØê1Äü
TIM4->CCER|=1<<0; //OC1 êä3öê1Äü
TIM4->CCER|=1<<4; //OC2 êä3öê1Äü
TIM4->CCER|=1<<8; //OC3 êä3öê1Äü
TIM4->CCER|=1<<12; //OC4 êä3öê1Äü
TIM4->CCER|=1<<13; //OC4 ¸ßμçƽóDD§
TIM4->CR1|=1<<7; //ARPEê1Äü
TIM4->CR1|=1<<0; //ê1Äü¶¨ê±Æ÷3
}
void TIM1_PWM_Init(u32 arr,u32 psc)
{
//′Ë2¿·ÖDèêÖ¶ˉDT¸ÄIO¿úéèÖÃ
RCC->APB2ENR|=1<<0; //TIM1ê±Öóê1Äü
RCC->AHB1ENR|=1<<1;//ê1ÄüPORTBê±Öó
RCC->AHB1ENR|=1<<0;//ê1ÄüPORTAê±Öó
GPIO_Set(GPIOA,PIN9|PIN8|PIN10|PIN11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//¸′óÃ1|Äü,éÏà-êä3ö
GPIO_AF_Set(GPIOA,10,2); //PB1,AF2
GPIO_AF_Set(GPIOA,11,2); //PB1,AF2
GPIO_AF_Set(GPIOA,8,2); //PB1,AF2
GPIO_AF_Set(GPIOA,9,2); //PB1,AF2
TIM1->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉÖØ×°Öμ
TIM1->PSC=psc; //Ô¤·ÖÆμÆ÷2»·ÖÆμ
TIM1->CCMR1|=6<<12; //CH2 PWM1Ä£ê½
TIM1->CCMR1|=1<<11; //CH2 ԤװÔØê1Äü
TIM1->CCMR1|=6<<4; //CH1 PWM1Ä£ê½
TIM1->CCMR1|=1<<3; //CH1 ԤװÔØê1Äü
TIM1->CCMR2|=6<<12; //CH4 PWM1Ä£ê½
TIM1->CCMR2|=1<<11; //CH4 ԤװÔØê1Äü
TIM1->CCMR2|=6<<4; //CH3 PWM1Ä£ê½
TIM1->CCMR2|=1<<3; //CH3 ԤװÔØê1Äü
TIM1->CCER|=1<<0; //OC1 êä3öê1Äü
TIM1->CCER|=1<<4; //OC2 êä3öê1Äü
TIM1->CCER|=1<<8; //OC3 êä3öê1Äü
TIM1->CCER|=1<<12; //OC4 êä3öê1Äü
TIM1->CR1|=1<<7; //ARPEê1Äü
TIM1->CR1|=1<<0; //ê1Äü¶¨ê±Æ÷3
}
void TIM2_PWM_Init(u32 arr,u32 psc)
{
//′Ë2¿·ÖDèêÖ¶ˉDT¸ÄIO¿úéèÖÃ
RCC->APB1ENR|=1<<0; //TIM2ê±Öóê1Äü
RCC->AHB1ENR|=1<<1;//ê1ÄüPORTBê±Öó
RCC->AHB1ENR|=1<<0;//ê1ÄüPORTAê±Öó
GPIO_Set(GPIOB,PIN3|PIN10|PIN11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//¸′óÃ1|Äü,éÏà-êä3ö
GPIO_Set(GPIOA,PIN15,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOB,10,2); //PB1,AF2
GPIO_AF_Set(GPIOB,11,2); //PB1,AF2
GPIO_AF_Set(GPIOB,2,2); //PB1,AF2
GPIO_AF_Set(GPIOA,15,2); //PB1,AF2
TIM2->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉÖØ×°Öμ
TIM2->PSC=psc; //Ô¤·ÖÆμÆ÷2»·ÖÆμ
TIM2->CCMR1|=6<<12; //CH2 PWM1Ä£ê½
TIM2->CCMR1|=1<<11; //CH2 ԤװÔØê1Äü
TIM2->CCMR1|=6<<4; //CH1 PWM1Ä£ê½
TIM2->CCMR1|=1<<3; //CH1 ԤװÔØê1Äü
TIM2->CCMR2|=6<<12; //CH4 PWM1Ä£ê½
TIM2->CCMR2|=1<<11; //CH4 ԤװÔØê1Äü
TIM2->CCMR2|=6<<4; //CH3 PWM1Ä£ê½
TIM2->CCMR2|=1<<3; //CH3 ԤװÔØê1Äü
TIM2->CCER|=1<<0; //OC1 êä3öê1Äü
TIM2->CCER|=1<<4; //OC2 êä3öê1Äü
TIM2->CCER|=1<<8; //OC3 êä3öê1Äü
TIM2->CCER|=1<<12; //OC4 êä3öê1Äü
//TIM3->CCER|=1<<13; //OC4 ¸ßμçƽóDD§
TIM2->CR1|=1<<7; //ARPEê1Äü
TIM2->CR1|=1<<0; //ê1Äü¶¨ê±Æ÷3
}
|
|