我想设置22路PWM波,但是只有两路波形出来,其他没有波形。有没有大神解答一下啊

2019-08-22 14:09发布

#include "PWM.h"
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
yyuu
1楼-- · 2019-08-22 15:58
int main(void)
{       


                /* 初始化 */
        USART3_Config();                   /* 初始化串口:115200 8-N-1 */
  PWM_CONFIG();                                        /*配置PWM输出端口*/


while(1)
        {

          /////测试pwm波/////
               
                {p11();}
                        {p12();}
                        {p21();}
                        {p22();}
                {p41();}
                        {p42();}
                        {p113();}
                       
                        {p31();}
                        {p32();}   
                        {p51();}
                        {p52();}
                        {p61();}
                        {p62();}
                        {p71();}
                        {p72();}
                        {p81();}
                        {p82();}
                        {p91();}
                        {p92();}
                        {p101();}
                        {p102();}
                        {p111();}
                        {p112();}         
        //        {p113();} //
yyuu
2楼-- · 2019-08-22 21:42
yyuu 发表于 2017-3-16 17:01
int main(void)
{       

void PWM_CONFIG(void)
{  
   GPIO_InitTypeDef GPIO_InitStructure;
   
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4|RCC_APB1Periph_TIM5, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_TIM8, ENABLE);

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC||RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
  
   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    // 复用推挽输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_1;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
   GPIO_PinRemapConfig (GPIO_FullRemap_TIM2,ENABLE);
   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10|GPIO_Pin_11;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
yyuu
3楼-- · 2019-08-22 23:55
 精彩回答 2  元偷偷看……
yyuu
4楼-- · 2019-08-23 05:01
yyuu 发表于 2017-3-16 17:09
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
   GPIO_InitStru ...

void p11(void) //pa8
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC1Init(TIM1, &TIM_OCInitStructure);         
   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM1, ENABLE);                       
   TIM_Cmd(TIM1, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM1,ENABLE);
}                         
void p12(void) //pa9
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC1Init(TIM1, &TIM_OCInitStructure);         
   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM1, ENABLE);                       
   TIM_Cmd(TIM1, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM1,ENABLE);   
}                                                                       
void p21(void)        //pa10
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC3Init(TIM1, &TIM_OCInitStructure);         
   TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM1, ENABLE);                       
   TIM_Cmd(TIM1, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM1,ENABLE);
}
void p22(void)
{ TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC4Init(TIM1, &TIM_OCInitStructure);         
   TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM1, ENABLE);                       
   TIM_Cmd(TIM1, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM1,ENABLE);
}
yyuu
5楼-- · 2019-08-23 06:39
yyuu 发表于 2017-3-16 17:10
void p11(void) //pa8
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TI ...

void p31(void)
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
   TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC3Init(TIM8, &TIM_OCInitStructure);         
   TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM8, ENABLE);                       
   TIM_Cmd(TIM8, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM8,ENABLE);
}
void p32(void)
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
   TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC4Init(TIM8, &TIM_OCInitStructure);         
   TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM8, ENABLE);                       
   TIM_Cmd(TIM8, ENABLE);                                                                       
   TIM_CtrlPWMOutputs(TIM8,ENABLE);
}         
void p41(void)
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                  
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
         
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC3Init(TIM2, &TIM_OCInitStructure);         
   TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM2, ENABLE);               
   TIM_Cmd(TIM2, ENABLE);                                                                      
   TIM_CtrlPWMOutputs(TIM2,ENABLE);
}
void p42(void)
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef  TIM_OCInitStructure;
   TIM_TimeBaseStructure.TIM_Period = f;      
   TIM_TimeBaseStructure.TIM_Prescaler = 0;            
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                  
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
         
   TIM_OCInitStructure.TIM_Pulse = CCR_Val;       
   TIM_OC4Init(TIM2, &TIM_OCInitStructure);         
   TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);
   TIM_ARRPreloadConfig(TIM2, ENABLE);               
   TIM_Cmd(TIM2, ENABLE);                                                                      
   TIM_CtrlPWMOutputs(TIM2,ENABLE);
}
正点原子
6楼-- · 2019-08-23 08:08
你先搞出一个定时器的四路出来吧。
你这种代码写法,真是初学者的写法。。。

一周热门 更多>