STM32不能输出PWM波形 求助!调了整整一天

[复制链接]
 楼主| 不晚 发表于 2020-4-25 11:00 | 显示全部楼层 |阅读模式

单片机型号:stm32f103rct6 我用定时器3的pc7口进行输出PWM波形来控制L2898N 但是代码调了好几遍就是不能输出PWM波形 有没有大佬给我解答一下,这是为什么?代码如下:
void PWM_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;//定义结构体
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC  | RCC_APB2Periph_AFIO, ENABLE);//使能GPIO外设和AFIO复用功能模块时钟
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //选择Timer3全部重映像   
        //选择定时器3的通道2作为PWM的输出引脚   GPIOC.7
        
        TIM_DeInit(TIM3);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽功能
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化引脚
        
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定义初始化结构体
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
        //初始化TIM3
        TIM_TimeBaseStructure.TIM_Period = 9999; //自动重装载寄存器的值
        TIM_TimeBaseStructure.TIM_Prescaler =143; //TIMX预分频的值
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据以上功能对定时器进行初始化
        
        TIM_OCInitTypeDef  TIM_OCInitStructure;//定义结构体
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;//选择定时器模式,TIM脉冲宽度调制模式2
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出
        TIM_OCInitStructure.TIM_Pulse = 0;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OC2Init(TIM3, &TIM_OCInitStructure);//根据结构体信息进行初始化
        TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能定时器TIM2在CCR2上的预装载值
        TIM_ARRPreloadConfig(TIM3,ENABLE);
        TIM_Cmd(TIM3, ENABLE);  //使能定时器TIM3
}
airwill 发表于 2020-4-25 11:39 | 显示全部楼层
初看程序没有啥问题,   借助调试器, 验证一下内部寄存器的情况, 会不会寄存器被别的代码改掉了,
或者端口信号连接不良
人中狼 发表于 2020-4-25 17:11 | 显示全部楼层
PWM的占空比设置了没
yueguang3048 发表于 2020-4-30 11:57 | 显示全部楼层
人中狼 发表于 2020-4-25 17:11
PWM的占空比设置了没

TIM_OCInitStructure.TIM_Pulse = 0;估计他忘记填写了
ningling_21 发表于 2020-4-30 13:52 | 显示全部楼层
程序问题
 楼主| 不晚 发表于 2020-9-8 23:12 来自手机 | 显示全部楼层
感谢各位大佬,解决了,忘记登陆了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

99

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部