stm32的PWM实现过程

发布时间:2023-01-11  

stm32的PWM实现过程

  PWM是定时器扩展出来的一个功能(本质上是使用一个比较计数器的功能),配置过程一般为选定定时器、复用GPIO口、选择通道(传入比较值)、使能相应系统时钟、设定相应的预分频、计数周期、PWM模式(有两种)、电平极性等。具体介绍如下:

  一、定时器的特点归类

  STM32中一共有11个定时器,即 2个看门狗定时器、1个系统嘀嗒定时器(SysTick)及8个Timer定时器,详情如下表所示。



  二、定时器所在时钟线路



  三、PWM波形产生的原理

  通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器TIMx_CCR被用作比较功能,下面把它简称为比较寄存器。

  这里直接举例说明定时器的PWM输出工作过程:若配置脉冲计数器TIMx_CNT为向上计数,而重载寄存器TIMx_ARR被配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动下不断累加,当TIMx_CNT的数值X大于N时,会重置TIMx_CNT数值为0重新计数。

  四、STM32产生PWM的配置方法

  1、配置GPIO口:

  查看具体的GPIO引脚,以及查看GPIO口的复用功能(参考手册),我们这块用的是PC6。

  a.定时器1的引脚复用功能映像:



  b.定时器2的引脚复用功能映像:



  c.定时器3的引脚复用功能映像:



  d.定时器4的引脚复用功能映像:



  根据以上重映像表,我们使用定时器3的通道2作为PWM的输出引脚,所以需要对PB5引脚进行配置,对IO口操作代码:

  GPIO_InitTypeDef GPIO_InitStructure;//定义结构体

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);//使能GPIO外设和AFIO复用功能模块时钟

  GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //选择Timer3完全重映像

  //选择定时器3的通道1作为PWM的输出引脚TIM3_CH1->PB6 GPIOC.6

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM_CH1

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽功能

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化引脚

  2、初始化定时器


  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定义初始化结构体

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟

  //初始化TIM3

  TIM_TimeBaseStructure.TIM_Period = 255; //自动重装载寄存器的值

  TIM_TimeBaseStructure.TIM_Prescaler =7199; //TIMX预分频的值

  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据以上功能对定时器进行初始化

  3、设置TIM3_CH1的PWM模式,使能TIM3的CH1输出


  TIM_OCInitTypeDef TIM_OCInitStructure;//定义结构体

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//选择定时器模式,TIM脉冲宽度调制模式1

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//输出比较极性低

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);//根据结构体信息进行初始化

  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能定时器TIM2在CCR1上的预装载值

  4、使能定时器3


  TIM_Cmd(TIM3, ENABLE); //使能定时器TIM3

  5、使用PWM


  经过上述操作,我们只需调用函数(如下)给通道1传值即可实现PWM波形正常输出。


  static void PWM_Channel1_Out(u16 pwm)

  {

  TIM3->CCR1 = pwm;

  }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    单片机烧录程序怎么分类;说起给单片机烧录程序,大家应该都不陌生,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件——STC-ISP。 这种......
    到产品研发,给已经发布出的产品升级,都是要靠远程无线升级的(想想看,产品已经到客户那里了,当软件需要升级时,要是还使用有线的方式烧录程序,得有多麻烦) 既然给单片机烧录程序的方式有多种,那烧录方式具体怎么......
    如何给单片机烧录程序 单机片烧录不进去怎么办;如何给单片机烧录程序? 以51单机片为例 1、首先准备好51单片机最小系统板和烧录器。 2、打开stc-isp烧录软件选择好单片机型号,这里......
    一样,下载程序时的步骤都是类似的,无非就是选择好串口和波特率,加载HEX文件,选择附加选项后再烧录程序即可。 ISP普通烧录 根据上表所示,我们用STM32的串口下载程序的步骤为: 1.电脑通过USB线连......
    下来我就要下载各种各样的软件进行编程,烧录,写个最简单的Blink程序都非常麻烦,折腾我一天。 要是能像Arduino一样简单方便快捷就好了,怎么办呢?那么现在正式开始教程! 所需工具 STM32最小系统板,配套......
    配置不方便,而常用的串口配置很方便,所有通过这个程序转换,就可以用串口烧录程序到内部FLASH中了。 STM32的启动方式: BOOT1=x  BOOT0=0  从用户闪存启动,这是正常的工作模式。BOOT1......
    点亮LED(2024-08-16)
    我想配套的电路原理资料会有解释的,我这里也是看视频知道的。 具体步骤是 先编写代码,编译,然后用开发板对应的烧录程序把最后生成的HEX文件写进去。 先看下代码: #include 'reg52......
    照下面图示操作 如果不是第一次连接学习板,则按下面图示操作 连接成功后,会有如下提示,否则说明板子与jlink之间连接有问题 5、烧录程序,按照下图所示操作 6、烧录成功后,按下学习板上的RST按键......
    照下面图示操作 如果不是第一次连接学习板,则按下面图示操作 连接成功后,会有如下提示,否则说明板子与jlink之间连接有问题 5、烧录程序,按照下图所示操作 6、烧录成功后,按下学习板上的RST按键......
    习板,则按照下面图示操作 如果不是第一次连接学习板,则按下面图示操作 连接成功后,会有如下提示,否则说明板子与jlink之间连接有问题 5、烧录程序,按照下图所示操作 6、烧录成功后,按下......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>