OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2824|回复: 4

求助高级定时器PWM无法输出的额问题

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-12-10
在线时间
1 小时
发表于 2018-12-25 11:03:26 | 显示全部楼层 |阅读模式
1金钱
#include "Whose_Init_.h"
#include "stm32f10x.h"
#include "sys.h"
void RCC_Init_ (void)
{
  RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3 , ENABLE);
  //定时器3时钟使能
  RCC_APB2PeriphClockCmd (RCC_APB2Periph_TIM1 , ENABLE);
  //定时器1时钟使能
  RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOA , ENABLE);
  //GPIO时钟使能
  RCC_APB2PeriphClockCmd (RCC_APB2Periph_AFIO , ENABLE);
  //复用时钟使能
}
void GPIO_Init_ (void)
{
  GPIO_InitTypeDef GPIO_Init_GPIOC , GPIO_Init_GPIOE;
  
  GPIO_Init_GPIOC.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init_GPIOC.GPIO_Pin = GPIO_Pin_7;
  GPIO_Init_GPIOC.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init (GPIOC,&GPIO_Init_GPIOC);
  //GPIOC初始化
  
  GPIO_Init_GPIOC.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init_GPIOC.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
  GPIO_Init_GPIOC.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init (GPIOA,&GPIO_Init_GPIOC);
  PAout (5) = 1;
  PAout (6) = 0;
  //GPIOC初始化
  
  GPIO_Init_GPIOE.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init_GPIOE.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_11 | GPIO_Pin_8 | GPIO_Pin_10;
  GPIO_Init_GPIOE.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init (GPIOE,&GPIO_Init_GPIOE);
  //GPIOE初始化
  
  GPIO_PinRemapConfig (GPIO_FullRemap_TIM1,ENABLE);
  //定时器1重映射
  GPIO_PinRemapConfig (GPIO_FullRemap_TIM3,ENABLE);
  //定时器3重映射
}
void TIM_Init_ (void)
{
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInit_TIM3 , TIM_TimeBaseInit_TIM1;
  
  TIM_TimeBaseInit_TIM1.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseInit_TIM1.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit_TIM1.TIM_Period = 3599;
  TIM_TimeBaseInit_TIM1.TIM_Prescaler = 0;
  TIM_TimeBaseInit (TIM1,&TIM_TimeBaseInit_TIM1);
  //定时器1初始化
  TIM_Cmd (TIM1,ENABLE);
  //使能定时器1
  
  
  TIM_TimeBaseInit_TIM3.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseInit_TIM3.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit_TIM3.TIM_Period = 3599;
  TIM_TimeBaseInit_TIM3.TIM_Prescaler = 0;
  TIM_TimeBaseInit (TIM3,&TIM_TimeBaseInit_TIM3);
  //定时器3初始化
    TIM_Cmd (TIM3,ENABLE);
  //使能定时器3
}
void PWM_Init_ (void)
{
  TIM_OCInitTypeDef TIM_OCInit_TIM3,TIM_OCInit_TIM1;
  
  TIM_OCInit_TIM3.TIM_Pulse = 3599;
  TIM_OCInit_TIM3.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInit_TIM3.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInit_TIM3.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OC2Init (TIM3,&TIM_OCInit_TIM3);
  //定时器3PWM初始化
  TIM_OC2PreloadConfig (TIM3,TIM_OCPreload_Enable);
  //使能定时器3预装载寄存器
  
  
  TIM_OCInit_TIM1.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInit_TIM1.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInit_TIM1.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInit_TIM1.TIM_Pulse = 3599;
  TIM_OC1Init (TIM1,&TIM_OCInit_TIM1);
  //定时器1通道1初始化
  TIM_OC1PreloadConfig (TIM1,TIM_OCPreload_Enable);
  //使能定时器1预装载寄存器  
  
  TIM_OCInit_TIM1.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInit_TIM1.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInit_TIM1.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInit_TIM1.TIM_Pulse = 0;
  TIM_OC2Init (TIM1,&TIM_OCInit_TIM1);
  //定时器1通道2初始化
  TIM_OC2PreloadConfig (TIM1,TIM_OCPreload_Enable);
  //使能定时器1预装载寄存器  
  
  TIM_ARRPreloadConfig(TIM1, ENABLE);
  //使能ARR预装载寄存器
  TIM_ARRPreloadConfig(TIM3, ENABLE);
  //使能ARR预装载寄存器
  TIM_CtrlPWMOutputs(TIM1,ENABLE);
  //定时器1主通道输出使能
}

这个是我的配置,主函数只是调用这些函数而已,我尝试用L298N驱动板控制电机,定时器3作为使能接口,PA5,PA6作为IN接口,用定时器3控制PWM波率没问题,用高级定时器控制PWM就炸了。。电机连转都不会转。。求助

最佳答案

查看完整内容[请看2#楼]

TIM_CtrlPWMOutputs(TIM1, ENABLE);//高级定时器必须开启这个
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2018-3-5
在线时间
70 小时
发表于 2018-12-25 11:03:27 | 显示全部楼层
TIM_CtrlPWMOutputs(TIM1, ENABLE);//高级定时器必须开启这个
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-26 02:45:34 | 显示全部楼层
帮顶
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-17
在线时间
7 小时
发表于 2019-1-9 10:33:58 | 显示全部楼层
帮顶   
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2019-1-9 13:45:07 | 显示全部楼层
TIM_CCxCmd没有这个通道输出使能函数吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 03:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表