baiyni888 发表于 2018-10-16 19:24:35

关与 STM8S103F3 定时器1产生PWM信号的问题

本帖最后由 baiyni888 于 2018-10-16 19:40 编辑

我在使用STM8S103F3 单片机定时器2产生PWM信号时,是没有问题的,CH1CH2CH3 都是能正常输出PWM信号的;
但是在使用 定时器1 产生PWM信号时,一直就没有信号输出来,因为我想用到 反向的信号,所以想用 定时器1产生PWM,可以有互补信号出来


#include <iostm8s103f3.h>

////////////这是定时器1产生PWM信号的初始化
voidtimer1_PWM(void)
{
    CLK_PCKENR2 = 0x80;//开启定时器1外设时钟
   // TIM1_EGR |= 0x01;   //重新初始化TIM1
   // TIM1_RCR = 0x00;
    TIM1_PSCRH =0;   //设定预分频为,16分频 8M
    TIM1_PSCRL =0x01;//PWM的时钟 影响周期

    TIM1_CCER1 = 0x55; //CC2ER1开启1,2,高电平有效
    TIM1_CCMR1 = 0x60; //PWM模式1,CC1配置入输出
    TIM1_ARRH = 0x00;   //设定重装载值
    TIM1_ARRL = 0xff;//PWM的周期

    TIM1_CCR1H = 0x00;
    TIM1_CCR1L = 0x14;// 占空比值

    //TIM1_IER = 0x01;         //允许更新中断

    TIM1_CR1 = 0x01; //使能TIM1计数器
    TIM1_BKR = 0x80;

}
////GPIO端口初始化
void GPIO_init()
{
   PC_DDR=0xff;//方向输出
   PC_CR1=0xff;//推挽方式
   PC_CR2=0;
   PC_ODR=0;//输出低电平
}

void main()
{
    timer1_PWM();
    GPIO_init();
    while(1)
   {
    ;
   }
}

目前在单片机的 13   14    1617 输出脚上没有信号


baiyni888 发表于 2018-10-16 19:26:55

用的是IAR环境,头文件

#include <iostm8s103f3.h>

#define      uint         unsigned    int
#define      uchar      unsigned    char

baiyni888 发表于 2018-10-16 19:33:09

本帖最后由 baiyni888 于 2018-10-16 19:38 编辑

定时器2产生PWM是正常的,代码如下:

#include <iostm8s103f3.h>
voidtimer2_PWM(void)
{
      TIM2_CCMR1 = 0x70;
      TIM2_CCMR2 = 0x70;
   TIM2_CCER1 =0x33;
    TIM2_CCMR3 = 0x70;      //pwm模式2
    TIM2_CCER2 = 0x03;      //CC3引脚使能
   
      //设定频率-----------------------------
      //2^1=2分频
      TIM2_PSCR = 0x01;      
      //初始化自动装载寄存器
      TIM2_ARRH = 0x00;
      TIM2_ARRL = 0xFF;
      //初始化比较寄存器,决定PWM 方波的占空比
      TIM2_CCR1H = 0;
      TIM2_CCR1L = 50;
   TIM2_CCR2H = 0;
   TIM2_CCR2L = 150;
   TIM2_CCR3L = 100;   
   TIM2_CCR3H = 0;            //默认输出低
    TIM2_CR1 = 0x01;// 启动计数
}
void main()
{
    PD_DDR =0xff;//方向为输出
    PD_CR1 =0xff;   //推挽方式    PA_DDR =0x0f;
    PA_CR1 =0x0f;
    timer2_PWM();
    while(1);
}

可以在STM8S103F3单片机的1   10   20   三个脚同时输出三个PWM信号,占空比50微秒,100微秒,150微秒高电平方波信号

wenyangzeng 发表于 2018-10-16 21:06:20

PC6、PC7需要重映像TIM1-CH1、CH2



baiyni888 发表于 2018-10-17 08:51:36

果然是这个选择复用功能的原因,我说查了近10次代码原因,都是正常的,因为我是用的IAR,直接用的仿真的,没有用STVP下载,IAR仿真时也不知道怎么搞引脚复选功能,总的来说,非常感谢回复!:)

robter 发表于 2018-10-25 08:16:37

管脚复用一不小心就入坑
页: [1]
查看完整版本: 关与 STM8S103F3 定时器1产生PWM信号的问题