单片机
返回首页

STM32如何产生PWM信号

2016-12-08 来源:eefocus

本文实践用到的芯片为:STM32F103VET6。文中所述内容符合同系列芯片的应用。本文适合初学者阅读。

stm32PA0PWM

上面是在STM32引脚PA0上测得的频率为1KHz占空比为25%的PWM信号。下面讲如何实现。

STM32_TIM2_CH1引脚

如上图所示,我们使用定时器2通道1产生PWM。

执行思想:1.需要把引脚配置为复用推挽输出;2.需要配置定时器2。

1.配置引脚

我们用库函数实现的话,肯定要涉及到GPIO初始化配置结构体,所以需要定义一个GPIO_InitTypeDef类型的结构体变量,然后把变量成员配置好。

2.配置定时器2

我们用库函数的话,一是要涉及到定时器的基本配置结构体,所以需要定义一个TIM_TimeBaseInitTypeDef类型的结构体变量,然后把变量成员配置好。二是需要使用TIM_OC1Init()函数输出PWM信号,所以还需要定义一个TIM_OCInitTypeDef类型的结构体变量,然后把变量成员配置好。

程序如下:

void PA0_PWM(void)
{
 GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体变量
 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;// 定时器基本初始化结构体变量
 TIM_OCInitTypeDef TIM_OCInitStruct; // 定时器OC输出结构体初始化变量
 
 /* 允许TIM2 */
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
 /* 允许GPIOA */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 
 /* 选择PA0 */
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
 /* 复用推挽输出 */
 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
 /* 引脚最大输出频率 */
 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
 /* 配置 */
 GPIO_Init(GPIOA, &GPIO_InitStruct);
 
 /* 周期1000 */
 TIM_TimeBaseInitStruct.TIM_Period = 999; 
 /* 定时器时间间隔1微秒 */
 TIM_TimeBaseInitStruct.TIM_Prescaler = 71;
 /* 向上计数 */
 TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
 /* 配置 */
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
 
 /* 选择PWM1模式 */
 TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
 /* 允许输出模式 */
 TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; 
 /* 匹配值 */
 TIM_OCInitStruct.TIM_Pulse = 249; 
 /* 设置小于匹配值时为高电平 */
 TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
 /* 使能定时器2的通道1 */
 TIM_OC1Init(TIM2, &TIM_OCInitStruct); 
 
 /* 打开定时器2 */
 TIM_Cmd(TIM2, ENABLE);
}

执行上面的函数,即可在PA0引脚上输出占空比为25%频率为1KHz的PWM信号了。结构上面的描述和程序里面的描述,上面的程序就很好理解了。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

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

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

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

精选电路图
  • 单稳态控制电路设计与分析

  • MT3608构成3.7V转12V的升压电路图

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章