单片机
返回首页

STM32F103输出可变频率的PWM信号

2019-08-21 来源:eefocus

关于TIM4的使用我们首先必须要了解到一点,TIM4是什么?对于STM32内核来说,它是属于片上外设。内核如何使用片上外设?当然要通过内部的总线结构。以STM32F103为例,其内部总线结构如下两幅图所示: 

      

        通过这内部总线结构图我们知道,我们所想配置并使用的TIM4是挂载在内部中线APB1上的,所以我们知道我们要使用的库函数必然是和APB1总线相关的。期中与之相关的库函数包括:

    RCC_APB1PeriphClockCmd()、RCC_APB1PeriphResetCmd()

        其中RCC_APB1PeriphClockCmd()是用于使能或者失能 APB1 外设时钟的库函数,RCC_APB1PeriphResetCmd()是用于强制或者释放高速 APB(APB2)外设复位的函数,那么显然我们需要用到库函数RCC_APB1PeriphClockCmd()来使能挂载在APB1总线上的片上外设TIM4,然后我们才能使用这个片上外设。


        在具体的使用前我们还需要对外设进行相应的配置,就是设置与之相对应的寄存器。但好在库函数已经对这些操作进行了封装,封装了相应的数据结构,利用这些抽象起来的数据结构,我们可以对这些寄存进行整体的设置。所以我们需要定义处相应的数据类型的数据。


        TIM_TimeBaseInitTypeDef类型的数据就是官方函数库给出的用于配置TIMx的一种数据类型。定义好了以后,我们就需要利用相应的初始化函数来对TIMx进行相应的初始化操作,也就是调用TIM_TimeBaseInit()函数,并将设置好了数据的TIM_TimeBaseInitTypeDef类型的数据作为参数传入。


        因为我们需要的是利用TIM4向外部输出PWM信号,就是片内外设需要向片外传送信号,所以我们需要通过相应的引脚才能达到我们的目的。既然如此我们就必须要配置使能合适的引脚。还有一点就是前面我们选择的是TIM4来作为PWM信号源,也就是使用TIM4的复用功能,查阅官方资料,我们不难了解TIM4的复用功能被映射到了GPIOB(也就是PB),然后我们继续查看TIM4的重映射表,选择我们所想要的IO口,这里我们选择PB8,那么我们同时就知道了相应的TIM4需要使用的相应通道为TIM4_CH3(通道三),TIM4_REMAP 需要设置为0。


        以上的描述具体到代码上,我们还需要定义TIM_OCInit_Structure类型的数据来配置TIM4的PWM的具体参数,以及使用TIM_OC3Init()来完成TIM4的PWM的初始配置。当然也不能忘记定义GPIO_InitTypeDef类型的数据和使用GPIO_Init()来配置相应的IO口。


        最后总结出我们在代码层所需要做的事情如下:

    1、定义GPIO_InitTypeDef类型、TIM_TimeBaseInitTypeDef类型、TIM_OCInitTypeDef的数据,并进行设置具体参数。

    2、RCC_APB1PeriphClockCmd()和CC_APB2PeriphClockCmd()使能IO口和定时器

    3、调用GPIO_Init()、TIM_TimeBaseInit()、TIM_OC3Init()将我们在前面所设置的数据写入真实的内部寄存器。

    4、调用TIM_OC3PreloadConfig()来配置TIM4的输出通道为通道三。

    5、最后调用TIM_Cmd()来开启我们的定时器。

 

        那么通过以上的步骤我们就能完成相应的基本配置,使得PB8能够输出TIM4产生一个固定占空比的脉冲信号。


        要实现产生占空比可调的信号,我们可以将以上的操作进行封装,封装成一个函数:void Timer4_Init(u16 Period)。Period作为外部参数传入,然后内部设置TIM4的TIM_Period 时,通“TIM_TimeBaseInit_Structure.TIM_Period= Period;”的方式进行。那么我们只需要在合适的时候调用这个函数,并传入需要的合适值,便能够达到我们所想要的效果了。

进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 便携式混音器

  • 18W乙类音频放大器

  • 6晶体管H桥

  • USB LED调光器

  • USB自供电声卡

  • AVR LCD温度计—LM35

    相关电子头条文章