STM32
直播中

费加罗

8年用户 738经验值
私信 关注
[问答]

STM8S003 TIM1没PWM输出的原因?

用的是STM8S003的IC,然后配置tiM1没PWM输出,TIM2就可以输出,请教各位这是什么原因

TIM1_EGR |= 0x01;   //重新初始化TIM1
    TIM1_CR1 = 0x00;   //B7(0)可以直接写入 B65(00)边缘对齐模式B4(0)向上计数B3(0)计数器不停止发生更新事件
    TIM1_RCR = 0x00;  
    TIM1_PSCRH =0;     //设定预分频为,16分频 1M
    TIM1_PSCRL =0x80;  //PWM的时钟 影响周期
    TIM1_CCER1 = 0x0F; //CC2ER1开启1,2,高电平有效
    TIM1_CCMR1 = 0x60; //PWM模式1,CC1配置入输出
    TIM1_ARRH = 0;     //设定重装载值
    TIM1_ARRL = 0xFF;  //PWM的周期
    TIM1_CCR1H = 0;
    TIM1_CCR1L = 0x80;  // 占空比值
    TIM1_CR1 |= 0x01; //使能TIM1计数器
    TIM1_BKR |= 0x80;


回帖(2)

h1654155275.5950

2024-5-10 15:21:55
这是stm8s103的程序,你参考下TIM1_DeInit();                //pc3
  TIM1->CCMR3|=0Xf<<3;         //pwm模式2    TIM2_CNT   TIM1->CCER2|=1<<0;           //OC3高电平有效   开启OC3到引脚
  TIM1->BKR|=1<<7;             //允许OC/OCN输出
  TIM1->PSCRH=PSC>>8;            //
  TIM1->PSCRL=PSC;
  TIM1->ARRH=ARR>>8;
  TIM1->ARRL=ARR;
  TIM1->CCR3H=CCR>>8;
  TIM1->CCR3L=CCR;
  TIM1->EGR|=1<<0;         //产生一次 更新事件载入 PSCR  ARR
  //TIM1->IER|=1<<3;       //不允许中断
  TIM1->CR1|=1;       //使能计数器
举报

郭大

2024-5-10 17:28:20
STM8S003的TIM1没有PWM输出的原因可能有以下几点:

1. 时钟配置问题:请确保TIM1的时钟配置正确。检查STM8S003的时钟设置,确保TIM1的时钟源和时钟频率正确。

2. 定时器模式设置问题:请检查TIM1的模式设置是否正确。根据您的代码,您已经设置了TIM1为向上计数模式,但是请确保其他相关设置(如自动重载寄存器、捕获/比较模式等)也是正确的。

3. PWM通道配置问题:请检查TIM1的PWM通道配置是否正确。根据您的代码,您已经设置了CC2ER1为高电平有效,但是请确保其他通道(如CC1、CC2等)的配置也是正确的。

4. 输出引脚配置问题:请检查STM8S003的GPIO配置,确保与TIM1相关的PWM输出引脚已经配置为正确的模式(如推挽输出、开漏输出等)。

5. 中断和DMA配置问题:如果您使用了中断或DMA来控制PWM输出,请检查中断和DMA的配置是否正确。

6. 软件问题:请检查您的代码逻辑是否正确。确保所有相关的寄存器都已正确设置,并且没有遗漏任何步骤。

7. 硬件问题:如果以上步骤都无法解决问题,可能是STM8S003的硬件存在问题。建议您检查硬件连接,或者尝试使用另一块STM8S003进行测试。

为了解决这个问题,您可以尝试以下步骤:

1. 重新检查STM8S003的时钟配置,确保TIM1的时钟源和时钟频率正确。

2. 检查TIM1的模式设置,确保所有相关设置(如自动重载寄存器、捕获/比较模式等)都是正确的。

3. 检查TIM1的PWM通道配置,确保所有通道的配置都是正确的。

4. 检查STM8S003的GPIO配置,确保与TIM1相关的PWM输出引脚已经配置为正确的模式。

5. 如果使用了中断或DMA,请检查中断和DMA的配置是否正确。

6. 仔细检查您的代码逻辑,确保所有相关的寄存器都已正确设置,并且没有遗漏任何步骤。

7. 如果以上步骤都无法解决问题,检查硬件连接,或者尝试使用另一块STM8S003进行测试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分