stm32L(stm32f)的pwm输出-GPIO设置

STM32L用到GPIO的的复用功能时,需要配置寄存器GPIOX_AFRL与GPIOX_AFRH

stm32F中与stm32l此处不同

今天把调试了一个PWM输出的程序,怎么也出不来波形

就是缺了GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3); //重点没有就不出波形

void PWM_Init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3); //重点没有就不出波形

TIM_DeInit(TIM3);

TIM_TimeBaseStructure.TIM_Prescaler = 5; ////预分频(时钟分频)6M/(6+1)=1000K
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 5; //计数器 1000k/5=200k
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

TIM_SelectOCxM(TIM3, TIM_Channel_2, TIM_OCMode_PWM2);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC2Init(TIM3, &TIM_OCInitStructure);

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);

}

时间: 2024-08-08 13:56:48

stm32L(stm32f)的pwm输出-GPIO设置的相关文章

(五)转载:通用定时器PWM输出

1.     TIMER输出PWM基本概念   脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是对脉冲宽度的控制.一般用来控制步进电机的速度等等. STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出. 1.1   PWM输出模式 S

TIMER门控模式控制PWM输出长度

TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TIM4来控制其输出与停止 //frequency_tim2:TIM2 PWM输出周期:KHz //duty_tim2:TIM2 PWM占空比 0-100 //period_tim4: TIM4控制TIM2总周期,单位0.1ms //duty_tim4: TIM4控制TIM2输出时间,单位0.1ms v

STM32 PWM输出(映射)

STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出! 要使 STM32 的通用定时器 TIMx 产生 PWM 输出,分别需要用到3个寄存器:捕获 /比较模式寄存器(TIMx_CCMR1/2).捕获/比较使能寄存器(TIMx_CCER).捕获/比较寄存器(TIMx_CCR

RK3288的gpio设置

http://www.360doc.com/content/14/1227/18/14351252_436191812.shtml 目录 [隐藏] 1 简介 2 使用 2.1 输入输出 2.2 复用 简介 GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚. RK3288 有 9 组 GPIO bank: GPIO0,GPIO1, ..., GPIO8.每组又以 A0~A7, B0~B7, C0~C7, D0

cortex_m3_stm32嵌入式学习笔记(九):PWM 输出实验

PWM 简介 脉冲宽度调制(PWM),是英文"Pulse Width Modulation" 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是对脉冲宽度的控制. STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM

详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!(转)

一.stm32的pwm输出引脚是使用的IO口的复用功能. 二.T2~T5这4个通用定时器均可输出4路PWM--CH1~CH4. 三.我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!). 四.给出了PWM频率和占空比的计算公式. 步骤如下: 1.使能TIM3时钟 RCC->APB1ENR |= 1 << 1; 2.配置对应引脚(PA6)的复用输出功能 GPI

STM32F4——定时器原理及应用(中断、输入捕获、PWM输出)

一.简介: 不同的STM32系列有不同数量的定时器,针对现在学习的STM32F40x系列总共有14个定时器,针对这14个定时器可以将其分为3类,高级定时器.通用定时器和基本定时器,三种定时器大同小异,下边会针对通用定时器来介绍定时器的原理和应用.对于通用定时器根据位数和计数方式的不同又可以分为3类,相关分类的图表如下: 二.应用: 1.更新:计数器的上溢或下溢.2.事件触发.3.输入捕获.4.输出比较.5.支持针对定位的增量编码和霍尔传感器电路.5.触发输入作为外部时钟或按周期电源管理.下边会针

STM32F103 PWM输出实验(HAL库)

1.芯片输出PWM波形打码步骤 1.0主函数 int main(void) { HAL_Init(); //初始化HAL库 Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M delay_init(72); //初始化延时函数 uart_init(115200); //初始化串口 LED_Init(); //初始化LED TIM1_PWM_Init(20000,72); //72分频,即1M . 1000000/20000 = 50 Hz ,即20ms whil

STM32F0库函数初始化系列:PWM输出

void TIM1_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_Time1BaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); /* Time 定时基础设置*/ TIM_Time1BaseStructure.TIM_Prescaler = 0; TIM_Time1BaseStruct