历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | stm32f407多个定时器产生PWM(TIM1、TIM4、TIM9)

发布者:本人在 来源: eefocus关键字:stm32f407多  定时器  PWM 手机看文章 扫描二维码
随时随地手机看文章

#include "pwm.h"

u16 Right_Forward = 100;  
 
// PB7    TIM4_CH2

void TIM42_PWM_Init(u32 arr,u32 psc , u32 CCR2_Val )
{  

GPIO_InitTypeDef GPIO_InitStructure;   
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
TIM_OCInitTypeDef  TIM_OCInitStructure;     


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); 

GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM4); //GPIOB7

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 ;   //GPIOB7 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;       
GPIO_Init(GPIOB,&GPIO_InitStructure);              //PB7,PB6



RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);  


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_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;



TIM_OCInitStructure.TIM_Pulse = CCR2_Val;// channel 2
TIM_OC2Init(TIM4, &TIM_OCInitStructure); 
TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); 



  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPEʹÄÜ 

TIM_Cmd(TIM4, ENABLE);  //ʹÄÜTIM4
   
}  


void TIM41_PWM_Init(u32 arr,u32 psc , u32 CCR1_Val )
{  

GPIO_InitTypeDef GPIO_InitStructure;   
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
TIM_OCInitTypeDef  TIM_OCInitStructure;    


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); 

GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM4); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;     
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;     
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;       
GPIO_Init(GPIOB,&GPIO_InitStructure);              


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);  


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_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);

  
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 



TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OC1Init(TIM4, &TIM_OCInitStructure);  
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); 



  TIM_ARRPreloadConfig(TIM4,ENABLE);

TIM_Cmd(TIM4, ENABLE);  
   
}  


void TIM11_PWM_Init(u32 arr,u32 psc , u32 CCR1_Val )
{  

GPIO_InitTypeDef GPIO_InitStructure;   
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
TIM_OCInitTypeDef  TIM_OCInitStructure;     



RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);  


GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_TIM1); 


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;     
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;       
GPIO_Init(GPIOA,&GPIO_InitStructure);              




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_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 


TIM_OCInitStructure.TIM_Pulse = CCR1_Val;// channel 1
TIM_OC1Init(TIM1, &TIM_OCInitStructure);  
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); 
 
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;


  TIM_ARRPreloadConfig(TIM1,ENABLE);

TIM_Cmd(TIM1, ENABLE);  //ʹÄÜTIM4
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
}  


void TIM92_PWM_Init(u32 arr,u32 psc , u32 CCR2_Val )
{  

GPIO_InitTypeDef GPIO_InitStructure;   
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
TIM_OCInitTypeDef  TIM_OCInitStructure;    


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE);  

GPIO_PinAFConfig(GPIOE,GPIO_PinSource6,GPIO_AF_TIM9); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;        
GPIO_Init(GPIOE,&GPIO_InitStructure);             

 


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_TimeBaseInit(TIM9,&TIM_TimeBaseStructure);


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;



TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
TIM_OC2Init(TIM9, &TIM_OCInitStructure); 
TIM_OC2PreloadConfig(TIM9, TIM_OCPreload_Enable);  


  TIM_ARRPreloadConfig(TIM9,ENABLE);//ARPEʹÄÜ 

TIM_Cmd(TIM9, ENABLE);  //ʹÄÜTIM4
   
}  

关键字:stm32f407多  定时器  PWM 引用地址:stm32f407多个定时器产生PWM(TIM1、TIM4、TIM9)

上一篇:STM3的TIM4定时器功能设置
下一篇:stm32中编码器模式读出“负数”的问题

推荐阅读

近日,“ADAS与自动驾驶处理器大会”在广州举行。来自政府、高校、整车企业、供应商、半导体企业的代表共同探讨了车载AI处理器和计算平台的的开放生态和中国方案。这是国内第一次围绕车载AI处理器专门组织的行业会议。地平线创始人兼CEO余凯在会中提到:全球芯片行业正在迎接新摩尔定律时代,而越来越多的事实正在证实——软硬结合势必将是未来的行业发展...
      2020奥运年,参展日本国际机器人开发及应用技术展RoboDEX,进击日本及亚洲机器人市场!自2017年盛大开展,RoboDEX飞速成长为日本领先的机器人开发与应用技术展会。展品海纳工业/服务机器人开发技术、IT、AI等有关机器人的一切产品与技术。2020年2月第4届RoboDEX将与日本国际智能工厂展(SMART FACTORY Expo)、日本可穿戴设备与技术展( ...
据外媒报道,沃尔沃汽车(Volvo Cars)在其车型中引入了一项全球首创的优质空气质量技术,可让沃尔沃驾驶员在出行之前呼吸到清洁健康的空气,还能够净化车内的空气。(图片来源:沃尔沃汽车)该项先进空气净化技术(Advanced Air Cleaner)配备了一个传感器,可以测量车内的PM 2.5水平,该功能也是目前市场上任何一款汽车都没有的功能。中国的PM 2.5...
  当STM8单片机使用ADC功能读取多个通道的值时,可以使用单次模式,采样完一个通道之后,重新初始化另一个通道,然后采样,采样完成后继续重新初始化切换下一个通道。但是这样采样起来太麻烦。STM8单片机提供了一个扫描模式,可以依次按照顺序采样多个通道的值,多个通道全部采样完成后,会置位标志位,这样就可以一次性将多个通道的值全部读出来。  ...

史海拾趣

问答坊 | AI 解惑

搞不定了,不得不发帖求助了!——OV2640 200W 摄像头驱动问题

平台 2440 wince6.0 其实这个驱动是4.2BSP下的,我直接搬上来用了。 是比较简单的那种,是单层的。 初始化代码太多了,我就不发了,我发个图片上来让大家提供点思路。 问题一、摄像头中断产生正常,踩到的图像是一片绿色,在摄像头前面放置任何 ...…

查看全部问答∨

怎么添加msxml组件

我的win ce 6.0安装了msxml但是msxml.XMLHTTP这个activex控件没有,想要添加这个activex请问有啥办法吗?…

查看全部问答∨

51单片机设计闹钟时,在闹钟到时后,如何编写音乐子程序。

我设计了一个闹钟,闹钟到时后播放音乐,但这个音乐播放后如何返回主程序呢?…

查看全部问答∨

绝对式编码器的相位对齐方式

绝对式编码器的相位对齐对于单圈和多圈而言,差别不大,其实都是在一圈内对齐编码器的检测相位与电机电角度的相位。早期的绝对式编码器会以单独的引脚给出单圈相位的最高位的电平,利用此电平的0和1的翻转,也可以实现编码器和电机的相位对齐,方法 ...…

查看全部问答∨

STM32F面向电机控制的矢量控制算法,ST能提供吗?

                                 STM32F面向电机控制的矢量控制算法,ST能提供吗?…

查看全部问答∨

年薪7W-25W急聘模电工程师(电子工程师)

我公司是国际领先的光电检测设备研发生产厂商,员工500余人,坐落于美丽的浙江杭州,也是一家拟上市公司。         现急招电子工程师10名,年薪7-25W,要求精通模拟电路,有较强的承压能力与学习能力。   ...…

查看全部问答∨

【问TI】M3 ADC参考电压

用51做数字电压表或者使用AD时,因为用的USB供电 电压不是标准,所以测出来的电压会有偏差, M3也会遇到这个问题吧,是如何解决的呢?…

查看全部问答∨

tinyos移植

我按网上移植步骤做的,大致步骤做完了,在测试程序编译时出现错误:confused by earllier errors - bailing out compiled····求各位高手指点一下!…

查看全部问答∨

寻找ARM芯片周边电路设计的资料

     想寻找ARM版周边电路设计的资料,比如怎么连接flash,ram,LCD等,最好是结合电路图的讲解。     不知道有没有。。。。…

查看全部问答∨

CCS5.1 Grace中配置完成后怎么生成头文件?

CCS5.1 Grace中配置完成后怎么生成头文件?是Refresh后自动生成吗?为什么我编译的时候总是提醒#5 could not open source file \"ti/mcu/msp430/csl/CSL.h\" ? …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved