原子哥请进,关于TIM2完全重映射后PWM的CH1和PWM的CH2没有输出

2019-08-14 07:19发布

TIM2完全重映射后PWM的CH1和PWM的CH2没有输出,CH3,CH4正常输出了。

代码如下:
 RCC->APB2ENR|=1;   //开AFIO时钟使能
 AFIO->MAPR|=0X04<<24;  //关闭JTAG-DP,SW-DP
 AFIO->MAPR|=0X03<<8;  //全部重定义TIM2  RCC->APB1ENR|=0X0F;       //TIM2 3 4 5时钟使能
 RCC->APB2ENR|=1<<11;       //TIM1时钟使能
 RCC->APB2ENR|=1<<13;       //TIM8时钟使能
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
 RCC->APB2ENR|=1<<3;     //使能PORTB时钟   
 RCC->APB2ENR|=1<<4;     //使能PORTC时钟   
 GPIOA->CRL&=0X00FF0000;//PA7 6 PA0-3输出
 GPIOA->CRL|=0XBB00BBBB;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOA->ODR|=11001111;//PA7 6 PA0-3上拉  GPIOA->CRH&=0X0FFF0000;//PA15 PA8-11输出
 GPIOA->CRH|=0XBF00BBBB;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOA->ODR|=1000111111001111;//PA15 PA6-11 PA0-3上拉  GPIOB->CRL&=0X00FF0F00;//PB0 1 3 6 7输出
 GPIOB->CRL|=0XBB00B0BB;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOB->ODR|=11001011;//PB1 PB0上拉
 GPIOB->CRH&=0XFFFF0000;//PB8-11输出
 GPIOB->CRH|=0X0000BBBB;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOB->ODR|=0X3F<<6;//PB6-11 上拉   GPIOC->CRL&=0X00FFFFFF;//PC6 7输出
 GPIOC->CRL|=0XBB000000;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOC->ODR|=0X03<<6;//PC6 7上拉   GPIOC->CRH&=0XFFFFFF00;//PC8 9输出
 GPIOC->CRH|=0X000000BB;//复用功能输出 (复用功能推挽输出模式,最大速度50MHz)
 GPIOC->ODR|=0X03;//PB8 9 上拉   TIM8->ARR=arr;//设定计数器自动重装值
 TIM8->SC=psc;//预分频器不分频  TIM5->ARR=arr;//设定计数器自动重装值
 TIM5->SC=psc;//预分频器不分频  TIM4->ARR=arr;//设定计数器自动重装值
 TIM4->SC=psc;//预分频器不分频  TIM3->ARR=arr;//设定计数器自动重装值
 TIM3->SC=psc;//预分频器不分频
 
 TIM2->ARR=arr;//设定计数器自动重装值
 TIM2->SC=psc;//预分频器不分频  TIM1->ARR=arr;//设定计数器自动重装值
 TIM1->SC=psc;//预分频器不分频  TIM1->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM1->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM2->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM2->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM3->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM3->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM4->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM4->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM5->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM5->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM8->CCMR1|=0X6464;  //CH2 PWM1模式,CH2预装载使能,CH1 PWM1模式,CH1预装载使能
 TIM8->CCMR2|=0X6464;  //CH3 PWM1模式,CH3预装载使能,CH4 PWM4模式,CH4预装载使能  TIM1->CCER|=0X1111;   //OC1-4 输出使能
 TIM2->CCER|=0X1111;   //OC1-4 输出使能
 TIM3->CCER|=0X1111;   //OC1-4 输出使能
 TIM4->CCER|=0X1111;   //OC1-4 输出使能
 TIM5->CCER|=0X1111;   //OC1-4 输出使能
 TIM8->CCER|=0X1111;   //OC1-4 输出使能  TIM1->CR1=0x8000;   //ARPE使能
 TIM1->CR1|=0x01;    //使能定时器1              TIM2->CR1=0x8000;   //ARPE使能
 TIM2->CR1|=0x01;    //使能定时器2              TIM3->CR1=0x8000;   //ARPE使能
 TIM3->CR1|=0x01;    //使能定时器3              TIM4->CR1=0x8000;   //ARPE使能
 TIM4->CR1|=0x01;    //使能定时器4              TIM5->CR1=0x8000;   //ARPE使能
 TIM5->CR1|=0x01;    //使能定时器5              TIM8->CR1=0x8000;   //ARPE使能
 TIM8->CR1|=0x01;    //使能定时器8            

目前有两个问题
第一:TIM2完全重映射后PWM的CH1和PWM的CH2没有输出
第二:TIM1和TIM8也没有PWM输出
我用的时103RCT6
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
正点原子
1楼-- · 2019-08-14 08:13
回复【楼主位】dzq1980:
---------------------------------
既然3和4有输出,1和2,你可以看看寄存器的数据,和3和4 的对比下.
TIM1和TIM8有个主输出使能,不知道你使能了没有,如果不使能,就无输出的.
dzq1980
2楼-- · 2019-08-14 09:00
 精彩回答 2  元偷偷看……
dzq1980
3楼-- · 2019-08-14 11:16
TIM2不重映射是完全正常的。
完全重映射后PWM的CH1和PWM的CH2没有输出
没有找到原因
dzq1980
4楼-- · 2019-08-14 12:29
请问TIM1主输出使能找到了
TIM1->BDTR|=1<<15; //TIM1开主使能    这里只有TIM1和8用
不加这里,TIM1和TIM8没有PWM输出
现在还有一个问题就是TIM2不重映射是完全正常的。 
完全重映射后PWM的CH1和PWM的CH2没有输出 
没有找到原因
正点原子
5楼-- · 2019-08-14 14:28
回复【5楼】dzq1980:
---------------------------------
那你看看是不是IO弄错了.
dzq1980
6楼-- · 2019-08-14 17:22
回复【6楼】正点原子:
---------------------------------
IO没有错,CH1和CH2重映射后是PA15和PB3这两个IO口又刚刚好是JTAG的端口,可是我以关闭了JTAG端口还是不行
RCC->APB2ENR|=1;   //开AFIO时钟使能
 AFIO->MAPR|=0X04<<24;  //关闭JTAG-DP,SW-DP
 AFIO->MAPR|=0X03<<8;  //全部重定义TIM2

 

一周热门 更多>