STM32F407 TIM1的PWM输出

发布者:huanhui最新更新时间:2018-06-28 来源: eefocus关键字:STM32F407  TIM1  PWM输出 手机看文章 扫描二维码
随时随地手机看文章

//TIM1 PWM部分初始化 

//PWM输出初始化

//arr:自动重装值

//psc:时钟预分频数

void TIM1_PWM_Init(u32 arr,u32 psc)

{  

//此部分需手动修改IO口设置

GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

TIM_OCInitTypeDef  TIM_OCInitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   //TIM1时钟使能    

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能PORTA时钟

//复用不能写成下面,会出问题

//GPIO_PinAFConfig(GPIOA,GPIO_PinSource8|GPIO_PinSource11,GPIO_AF_TIM1); //GPIO复用为定时器1

GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TIM1); //复用GPIOA_Pin8为TIM1_Ch1, 

GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_TIM1);//复用GPIOA_Pin11为TIM1_Ch4,注意没有CH4N 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_11;           //GPIO

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure);              //初始化P

TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频

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

TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 

//TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;//默认就为0

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//初始化定时器1

 

 

 

//初始化TIM1  PWM模式  

//PWM 模式 1–– 在递增计数模式下,只要 TIMx_CNT

 

 

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM1为正常占空比模式,PWM2为反极性模式

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

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低,有效电平为低电平

 

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//在空闲时输出     低,这里的设置可以改变TIM_OCPolarity 如果没这句,第1通道有问题

TIM_OCInitStructure.TIM_Pulse = 2000; //输入通道1 CCR1(占空比数值)

TIM_OC1Init(TIM1, &TIM_OCInitStructure); //Ch1初始化

TIM_OCInitStructure.TIM_Pulse = 5000;

TIM_OC4Init(TIM1, &TIM_OCInitStructure);//通道4

TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //使能TIM1在CCR1上的预装载寄存器,CCR自动装载默认也是打开的

TIM_ARRPreloadConfig(TIM1,ENABLE);//ARPE使能 

TIM_Cmd(TIM1, ENABLE);  //使能TIM1

TIM_CtrlPWMOutputs(TIM1, ENABLE);//使能TIM1的PWM输出,TIM1与TIM8有效,如果没有这行会问题

 

}  


关键字:STM32F407  TIM1  PWM输出 引用地址:STM32F407 TIM1的PWM输出

上一篇:STM32的PWM波产生的问题总结
下一篇:LPC17xx的MCPWM周期设置与计算

推荐阅读最新更新时间:2024-03-16 16:07

stm32f407之通用定时器
通用定时器(TIM2 to TIM5)包括由可编程的分频器驱动一个的16位或32位自动重载计数器。它们可用于多种用途,包括测量输入信号的脉冲长度(输入捕获)或生成的输出波形(输出比较和PWM)。可以使用定时器的预分频器和RCC时钟控制器分频器调制从几微秒到几毫秒的脉冲长度和波形周期。它们是完全独立的,不共享任何资源。 主要特点: 通用TIMx定时器功能包括: 1. 16位(TIM3和TIM4)或32位(TIM2和TIM5)计数器,向上,向下,向上/向下自动重装计数。 2. 16位可编程预分频器(可在运行时改变)用于在1到65535之间细分计数器的时钟频率。 3. 多达4个独立的通道可用于: - 输入捕捉 - 输出比较 - P
[单片机]
Stm32f407 key中断方式示例
硬件平台: stm32f407ve 软件平台: win10 (OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.18363 N/A Build 18363) Keil5 5.26.2 HAL库版本: 2.14.0(目前下载的最新的) 中断:这个概念一般有点难以理解,但是又是一个非常重要的功能,基本所有的单片机(或者说处理器)都有中断。可见中断的重要性。51单片机都有5个中断源,这是我接触到的最简单的中断系统了。 打个比方,还是手机的那个例子,上次我说的是
[单片机]
<font color='red'>Stm32f407</font> key中断方式示例
stm32f407】独立看门狗 iwdog
独立看门狗 STM32F4的独立看门狗由内部专门的32Khz低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的32Khz,而是在15~47Khz之间的一个可变化的时钟,只是我们在估算的时候,以32Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。独立看门狗有几个寄存器与我们这节相关,我们分别介绍这几个寄存器,首先是关键字寄存器IWDG_KR 在关键字寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其 复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号
[单片机]
【<font color='red'>stm32f407</font>】独立看门狗 iwdog
STM32开发笔记58: STM32F407特殊引脚连接电路
单片机型号:STM32F407VGT6 本文介绍STM32F407特殊引脚连接电路,见下图: 引脚:49、73 VCAP_1和VCAP_2,按照下列电路设计方法进行设计。这里应该着重看最后1句话,其表明使用2个0.1uF电容对地即可。 引脚:11、22、28、50、75、100 VDD和VDDA,22脚是模拟电源,这些引脚直接加0.1uF电容去耦即可。 引脚:6 VBAT,该引脚连接电池,用以在主电源掉电后,维持芯片部分部件(例如RTC)继续工作,当不使用这些功能时,可按照下述方法进行电路连接。 引脚:21 VREF+,此引脚有2种处理方法,第1种是独立供给参考电压,其参考电路图如
[单片机]
STM32开发笔记58: <font color='red'>STM32F407</font>特殊引脚连接电路
STM32F407_FreeRTOS_LwIP调试详解一:Cube_MX生成工程
概要:本次使用的硬件平台是STM32F407ZGT6的板子,外加一块LAN8742A网络模块,先上一张全家福: 软件平台使用的是CubeMX V4.22及Keil V5.21.10软件。 LwIP的架构 LwIP API的三种方式: 1、使用CubeMX新建工程,如下图所示: 2、选择芯片型号:本开发板使用的是STM32F407ZGT6芯片; 3、IO口选择 3.1、选择并使能RCC时钟源为:HSE 3.2、选择并使能ETH接口为:RMII类型接口,本次使用的是LAN8742A模块,是RMII类型接口 3.3、选择并使能LWIP协议栈: 3.4、选择并使能FreeRTOS操作系
[单片机]
STM32F407_FreeRTOS_LwIP调试详解一:Cube_MX生成工程
STM32F407学习笔记二(GPIO)
从上文可以看到,在系统启动过程中会对系统时钟进行一次配置,有了时钟源以后,我们来看简单的GPIO配置:对于GPIO,使用寄存器进行配置时:我们先来看一个例子: #include stm32f4xx.h uint32_t Gb_TimingDelay; void Delay(uint32_t nTime); void main() { SysTick_Config(SystemCoreClock/1000);//1ms based time RCC- AHB1ENR |= RCC_AHB1ENR_GPIODEN; //ENABLE GPIOD RCC- APB2ENR |= RCC_APB2ENR_SYSCFGEN
[单片机]
<font color='red'>STM32F407</font>学习笔记二(GPIO)
基于STM32F407最小系统板三种矩阵键盘实现方法
这里采用的八个端口为PA0-PA7。 此处先给出矩阵键盘的原理图: 一、八个端口采用开漏输出,配置上拉电阻,实现同51一样的双向IO口功能。 //按键初始化函数 void KEY_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_P
[单片机]
基于<font color='red'>STM32F407</font>最小系统板三种矩阵键盘实现方法
STM32 使用TIM2_CH1(PA15) 输出10K PWM信号
PA15- TIM2 Remap CH1 1.apb_init() RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); 2.gpio_init() #define PWM_GPIO_IDX 8 //PA15 #define PWM_GRP GPIOA #define PWM_PIN GPIO_Pin_15
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved