ni昊e 2023-07-23 16:24 采纳率: 0%
浏览 25

stm32的A1口不输出PWM波

我的stm32f103c8的A1口不输出PWM波,使用keil5仿真时出现PWM波,但在实际使用时,无法输出PWM波,如下,是我的PWM配置函数:

void PWM_Init(void)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,  ENABLE);
    // 引脚初始化
    GPIO_InitTypeDef GPIO_InitStructure;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;  
    //轮子的ENAENB引脚接A1A2 。其中,A1使用TIM2_CH2A2使用TIM2_CH3    
    //A3是超声波发声引脚,使用TIM2_CH4
    
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
    //TIM2初始化
    TIM_InternalClockConfig(TIM2);
    
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;            //ARR
    TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;                        //PSC
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
    
    TIM_OCInitTypeDef  TIM_OCInitStructure;
    TIM_OCStructInit( &TIM_OCInitStructure);
    TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1 ;
    TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
    TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse =0;                        //CCR
    TIM_OC2Init(TIM2,  &TIM_OCInitStructure);
    
    TIM_OCStructInit( &TIM_OCInitStructure);
    TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1 ;
    TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
    TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse =0;                        //CCR
    TIM_OC3Init(TIM2,  &TIM_OCInitStructure);
    TIM_Cmd(TIM2, ENABLE);
}


//CCR值以用来调速
void PWM_SetCompareL(uint8_t compareL)//左轮调速
{
    TIM_SetCompare2(TIM2, compareL);
}

void PWM_SetCompareR(uint8_t compareR)//右轮调速
{
    TIM_SetCompare3(TIM2, compareR);
}


如下是我的电机速度设置函数

void Motor_setSpeed(int8_t speedL,int8_t speedR)//电机速度设置函数
{
    
        GPIO_SetBits(GPIOA, GPIO_Pin_4);//A4接高电平,即代表前进 
        GPIO_ResetBits(GPIOA, GPIO_Pin_5);
        
        GPIO_ResetBits(GPIOB, GPIO_Pin_13);
        GPIO_SetBits(GPIOB, GPIO_Pin_14);//B14 接高电平代表前进
    
        PWM_SetCompareL(speedL);
        PWM_SetCompareR(speedR);
}


如下所示,为仿真图像:

img

  • 写回答

2条回答 默认 最新

  • 比特流1024 2023-07-23 17:06
    关注

    你先用示波器打一下那个出pwm的pin脚。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月23日

悬赏问题

  • ¥15 结构功能耦合指标计算
  • ¥20 visual studio中c语言用ODBC链接SQL SERVER
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询