topguntoo 2024-07-02 16:47 采纳率: 40%
浏览 13
已结题

要用 STM8L050J3M3TR 输出1路PWM 没有输出 不知道是不是 复用IO需要配置还是 定时器初始化的问题



```c
// TIM2  PWM
//////////////////////////////////////////////////////////////////
  TIM2_PSCR=3; //分频 
  TIM2_ARRH=0X13;//确定频率
  TIM2_ARRL=0X88;
  TIM2_CCER1=0x10;
  TIM2_CCMR2=0X78; // OC2PE:输出比较2预装载使能
  TIM2_CCR2H =0X01;
  TIM2_CCR2L =0XF4;
  TIM2_CR1=0x01; //使能计时器 
//////////////////////////////////////////////////////////////////

```   

  • 写回答

27条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-02 16:47
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    首先,从你给出的代码片段来看,你正在配置STM8L050单片机的TIM2来输出PWM。然而你遇到了PWM没有输出的问题。在排查问题之前,我们需要了解你的硬件设置和需求的一些细节。比如复用IO是否配置正确,定时器的时钟配置是否正确等。

    关于你的代码片段,这里有几个要点需要检查:

    1. 分频设置: TIM2_PSCR=3 是一个分频器的设置,确认这个值是否满足你的PWM频率需求。你可能需要根据你的系统时钟和所需的PWM频率来调整这个值。
    2. 定时器配置: 你设置了自动重载寄存器的值 (TIM2_ARRHTIM2_ARRL) 以及定时器控制事件寄存器 (TIM2_CCER1)。确认这些值是否正确设置以满足你的PWM周期需求。
    3. 输出比较寄存器的设置: 你设置了 TIM2_CCR2HTIM2_CCR2L 来决定PWM的占空比。确认这些值是否在你的期望范围内。
    4. 定时器使能: 你通过 TIM2_CR1=0x01 使能了定时器。这一步看起来是正确的。

    至于复用IO的配置问题,如果你的PWM信号不是从默认的PWM引脚输出,你需要正确配置对应的引脚复用功能。这通常涉及到设置GPIO的复用功能寄存器(如RCC_AHBENR等)以及对应的GPIO模式选择寄存器(如GPIOx_MODER等)。具体配置取决于你的硬件设计和引脚分配。

    为了进一步帮助你解决问题,你可以尝试以下步骤:

    • 确认单片机的系统时钟设置是否正确。
    • 检查复用IO的配置是否正确。如果使用了复用引脚,确保相关的复用功能已正确启用。
    • 使用示波器或逻辑分析仪检查PWM波形的输出,以确认是否有正确的PWM信号输出。
    • 检查是否有其他代码或中断影响了PWM的输出。

    如果你能提供更多的代码和硬件配置的细节,我可以提供更具体的帮助。另外,如果可能的话,提供一些额外的背景信息(例如PWM的预期用途和期望输出)将有助于我更准确地理解问题所在。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月10日
  • 创建了问题 7月2日

悬赏问题

  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?
  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角