虽然知道直接发表源代码让各位大佬找错并不好,但是小白真的做不到了

2019-07-19 20:24发布

[mw_shl_code=c,true]#include "stm8l15x_clk.h"
#include "stm8l15x_tim1.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x.h"
//默认自动重装载值为10000
//默认预分频系数为1600
//捕获比较寄存器
#define width_1 1000
#define width_2 2000
#define width_3 3000
#define width_4 4000
#define width_5 5000
#define width_6 6000
#define width_7 7000
#define width_8 8000
#define width_9 9000
#define width_10 10000
void BSP_Configuration(void);



void TIM_PWM1_Init()
  {
      TIM1_DeInit();
      
      TIM1_ARRPreloadConfig (ENABLE);//使能自动重装载寄存器

      TIM1_TimeBaseInit(0,TIM1_CounterMode_Up,2000,0x00);//TIM1的基本初始化
      //TIM1的输出通道1的初始化
      TIM1_OC1Init(TIM1_OCMode_PWM1, //初始化比较/捕获通道
                   TIM1_OutputState_Enable, //TIM1输出使能
                   TIM1_OutputNState_Disable, //TIM1互补输出关闭
                   1000, //脉冲宽度值
                   TIM1_OCPolarity_Low,//输出比较极性高
                   TIM1_OCNPolarity_Low, //输出互补比较极性高(无用)
                   TIM1_OCIdleState_Set, //输出比较空闲置位(高)
                   TIM1_OCNIdleState_Reset);//互补输出比较空闲状态
      TIM1_OC1PreloadConfig(ENABLE);//输出比较1的预装载使能
      TIM1_CtrlPWMOutputs(ENABLE);//输出PWM控制位使能
      TIM1_Cmd(ENABLE);//开启TIM1定时器

  }

int main()
  {
      BSP_Configuration();//初始化
//TIM_PWM1_Init(10000,width_5);
      GPIO_ResetBits(GPIOD,GPIO_Pin_3);
     GPIO_SetBits(GPIOD,GPIO_Pin_3);
      GPIO_ResetBits(GPIOD,GPIO_Pin_3);
      TIM_PWM1_Init();
      while(1)
        {
          TIM1_SetCompare1(1000);
        }
  }
void BSP_Configuration(void)
  {
      CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
      CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
      CLK_HSEConfig(CLK_HSE_ON);
      GPIO_Init(GPIOD,GPIO_Pin_2,GPIO_Mode_Out_PP_High_Fast);
      GPIO_Init(GPIOD,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Fast);

//      _enable_interrupt();
  }
void assert_failed(u8* file, u32 line)
{
  while (1)
  {
  }
}
[/mw_shl_code]

主要就是让stm8输出pwm但是在示波器上怎么也观察不到现象,源代码的PD3来回跳没有意义,无须在意。谢各位大佬

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。