OpenEdv-开源电子网

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

STM32F030 TIM3.CH1 PWM没有任何输出,请帮忙看下好吗

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-8-3
在线时间
7 小时
发表于 2019-8-6 12:05:51 | 显示全部楼层 |阅读模式
2金钱
入门学习中, 这两天被STM32F030的PWM弄疯了,怎么整都没输出,求指点,
PWM通道 TIM3.CH1

//头文件
#include "stm32f0xx_hal.h"

#define GENERAL_TIMx                                          TIM3
#define GENERAL_TIM_RCC_CLK_ENABLE()              __HAL_RCC_TIM3_CLK_ENABLE()
#define GENERAL_TIM_RCC_CLK_DISABLE()            __HAL_RCC_TIM3_CLK_DISABLE()
#define GENERAL_TIM_GPIO_RCC_CLK_ENABLE()   {__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();}
#define GENERAL_TIM_CH1_PORT                          GPIOA
#define GENERAL_TIM_CH1_PIN                             GPIO_PIN_6

void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
{
  GPIO_InitTypeDef GPIO_InitStruct;

  if(htim->Instance == GENERAL_TIMx)
  {
    /* 定时器通道功能引脚端口时钟使能 */
    GENERAL_TIM_GPIO_RCC_CLK_ENABLE();

    /* 定时器通道1功能引脚IO初始化 */
    GPIO_InitStruct.Pin = GENERAL_TIM_CH1_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GENERAL_TIM_CH1_PORT, &GPIO_InitStruct);
  }
}

void GENERAL_TIMx_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  HAL_TIM_Base_MspInit(&htimx);

  htimx.Instance = GENERAL_TIMx;
  htimx.Init.Prescaler = GENERAL_TIM_PRESCALER;
  htimx.Init.CounterMode = TIM_COUNTERMODE_UP;
  htimx.Init.Period = GENERAL_TIM_PERIOD;
  htimx.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_Base_Init(&htimx);

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htimx, &sClockSourceConfig);

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htimx, &sMasterConfig);

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = GENERAL_TIM_CH1_PULSE;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  HAL_TIM_PWM_ConfigChannel(&htimx, &sConfigOC, TIM_CHANNEL_1);

  HAL_TIM_MspPostInit(&htimx);
}

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{

  if(htim_base->Instance == GENERAL_TIMx)
  {
    /* 基本定时器外设时钟使能 */
    GENERAL_TIM_RCC_CLK_ENABLE();
  }
}


主函数:
main()
{
  ...//(省略clk初始化)
  GENERAL_TIMx_Init();
  HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_1);
//HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_1);
  while(1);
}






最佳答案

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

void TIM4_Config(int arr,int psc) { GPIO_InitTypeDef GPIO_InitStructure; //结构体初始化 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //结构体初始化 TIM_OCInitTypeDef TIM_OCInitStructure; //结构体初始化 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
971
金钱
971
注册时间
2020-1-6
在线时间
124 小时
发表于 2019-8-6 12:05:52 | 显示全部楼层

void TIM4_Config(int arr,int psc)
{
                GPIO_InitTypeDef GPIO_InitStructure;          //结构体初始化
                TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;        //结构体初始化
                TIM_OCInitTypeDef  TIM_OCInitStructure;  //结构体初始化


                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
               
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  //复用推挽输出
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
                GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
                GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化GPIO
       
                GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_2);
               

                /* TIM1 clock enable */
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , ENABLE);
               
                /* Time Base configuration */
                TIM_TimeBaseStructure.TIM_Prescaler = psc;
                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
                TIM_TimeBaseStructure.TIM_Period = arr;
                TIM_TimeBaseStructure.TIM_ClockDivision = 0;// 设置时钟分割:TDTS = Tck_tim
                TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

                TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //初始化TIM4

                /* Channel 1Configuration in PWM mode */
                TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
                TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能
                TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;//比较输出使能
                TIM_OCInitStructure.TIM_Pulse =0;// Channel1Pulse;
                TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_High;//TIM_OCPolarity_Low;
                TIM_OCInitStructure.TIM_OCNPolarity =TIM_OCPolarity_Low;// TIM_OCNPolarity_High;
                TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
                TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

                TIM_OC3Init(TIM4, &TIM_OCInitStructure);
               
                TIM_Cmd(TIM4, ENABLE);//使能TIM4

                /* TIM1 Main Output Enable */
                TIM_CtrlPWMOutputs(TIM4, ENABLE);
}

回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-3-7 17:49:17 | 显示全部楼层
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //时钟使能
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  这个功能的GPIO初始化要加 这个..PP设置.
        //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_1);  还要映射
// 我的程序是 定时器3,通道1
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 01:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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