神清气爽冰皇 2023-11-09 06:36 采纳率: 0%
浏览 10

关于STM32多路PWM输出

一个通用时钟不是有四个引脚可以输出PWM吗,但是为什么我设置四个PWM,只有一个引脚输出

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-09 08:03
    关注

    【相关推荐】



    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/648590
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:基于STM32之PWM控制舵机以及PWM控制呼吸灯
    • 您还可以看一下 李浩然老师的ROS下位机——基于stm32开发课程中的 TIM输出PWM控制电机驱动小节, 巩固相关知识点
    • 除此之外, 这篇博客: STM32系列中PWM设置为默认通道不需要重映射中的 PWM普通引脚的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      其实这里的代码也是对原子的代码进行了一点修改
      本次使用的是STM32F103C8T6芯片
      查看芯片的数据手册可知引脚情况:
      PA0------TIM2_CH1
      PA1------TIM2_CH2
      PA2------TIM2_CH3
      PA3------TIM2_CH4
      本次配置用到的是STM32F103C8T6芯片的定时器2的通道2
      配置如下:
      ##1://打开GPIOA 及 TIM2的时钟 这是初学者最容易忘记的
      具体情况如下:

      	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
      	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);     
      

      ##2:对用到的GPIOA的引脚1进行初始化
      具体情况如下:

      GPIO_InitTypeDef 											GPIO_InitStruct;
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;     //这里一定要配置为复用输出 
      GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
      GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOA, &GPIO_InitStruct);
      

      ##3:定时器2的初始化
      具体情况如下:

      TIM_TimeBaseInitTypeDef 							TIM_TimeBaseInitStruct;
      TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
      TIM_TimeBaseInitStruct.TIM_Period = arr;			//此处数字最重要 是TIM_SetCompareX()中值得取值范围
      TIM_TimeBaseInitStruct.TIM_Prescaler = psc;
      TIM_TimeBaseInitStruct.TIM_ClockDivision = 0;         //可有可无
      TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
      

      ##4:通道2的初始化
      具体步骤如下:

      TIM_OCInitTypeDef 										TIM_OCInitStruct;
      TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
      TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
      TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
      TIM_OC2Init(TIM2,&TIM_OCInitStruct);
      

      ##5

      TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM2在CCR2上的预装载寄存器
      
      TIM_Cmd(TIM2, ENABLE);      //定时器2的使能
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月9日

悬赏问题

  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏