历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2019年10月28日 | STM32F103之Timer2PWM输出

2019-10-28 来源:eefocus

一、简介


本文以STM32F103编程为例,介绍STM32F103Timer2 PWM输出。


二、实验平台


电脑平台:Windows7 64位旗舰


编译软件:IAR


硬件平台:STM32F103CB


四、实验前提

1、在进行本文步骤前,请先安装IAR Embedded Workbench 5.4版本;准备好STM32F103CB硬件平台。

五、基础知识

暂无

六、源码地址

暂无

七、关联文章


八、实验内容


1.初始化Timer2,初始化时需先开起相关时钟


void Hal_Init_Pwm(uint16 period,uint16 Prescaler)

{  

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /*开定时器2时钟*/

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /*GPIO时钟开启*/

  

  /*引脚配置*/

  GPIO_InitTypeDef        GPIO_InitStructure;                   /*配置GPIO*/

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                /*复用输出*/

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);  

  /*配置TIMER2*/

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;                  /*配置TIMER2*/

  TIM_DeInit(TIM2);                                               /*初始化定时器2*/

  TIM_TimeBaseStructure.TIM_Period = period;                      /*重装值 计数到最大为3600-1 然后从0开始*/

  TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;                /*分频系数*/

  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        /*时钟分割*/

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;     /*向上计数*/

  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;  

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /*配置TIMER2PWM输出*/

  TIM_OCInitTypeDef       TIM_OCInitStructure;                    /*配置TIMER2PWM输出*/

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;               /*PWM2模式输出*/

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

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;        /*输出极性高 输出高电平*/

  /*通道1*/

//  TIM_OCInitStructure.TIM_Pulse =40*36;

//  TIM_OC1Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);

  /*通道2*/

  TIM_OCInitStructure.TIM_Pulse =0;           /*设置占空比*/

  TIM_OC2Init(TIM2, &TIM_OCInitStructure);         /*初始化外设TIMx 通道*/

  TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);/*CH1预装载使能*/

  /*通道3*/

//  TIM_OCInitStructure.TIM_Pulse =90*36;       

//  TIM_OC3Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);

  /*通道4*/

//  TIM_OCInitStructure.TIM_Pulse =0*36;

//  TIM_OC4Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM2, ENABLE);   /*使能TIMx在ARR上的预装载寄存器*/

  TIM_Cmd(TIM2, ENABLE);                /*使能定时器2*/

}

 


2.编写主函数


void main(void)

{

  Init_Clock();                  /*初始化时钟*/

  Hal_Init_Pwm(64000-1,0);       /* F =  PLL / (64000-1) */

  TIM_SetCompare2(TIM2,50*640);  /*输出占空比为50%*/

  while(1);

}


推荐阅读

史海拾趣

CWIND公司的发展小趣事

CWIND公司非常重视人才培养和团队建设。公司建立了完善的培训体系,为新员工提供全面的职业技能培训;同时,公司还鼓励员工参与各种技术交流和培训活动,提升自身的技术水平。在团队建设方面,CWIND注重营造积极向上的工作氛围和团队合作精神。通过定期举办团队建设活动和员工表彰大会等方式,公司成功打造了一支高效、协作、创新的团队。

Esterline Power Systems公司的发展小趣事

Esterline Power Systems公司在其早期阶段就致力于研发创新技术,以满足航空和国防行业对高性能电源系统的需求。一次关键的技术突破发生在公司对一种新型高效能电源控制器的研发上。面对市场上已有的产品性能瓶颈,公司的研发团队经过数月的深入研究与实验,成功开发出了具有更高效率和更稳定性能的电源控制器。这一创新不仅赢得了客户的认可,也为公司赢得了市场份额,奠定了在电源系统领域的领先地位。

Bkc Semiconductors Inc公司的发展小趣事

Bkc深知人才是企业发展的核心动力。因此,公司高度重视研发团队的建设和人才培养。通过引进业内顶尖的技术人才和提供完善的培训机制,Bkc逐渐打造出一支技术实力雄厚的研发团队。这支团队不仅为公司带来了源源不断的技术创新,也为公司的长远发展奠定了坚实的基础。

雅特力(Artery)公司的发展小趣事

在发展过程中,雅特力积极寻求与其他企业的战略合作,以实现共赢发展。通过与上下游企业建立紧密的合作关系,雅特力不仅确保了供应链的稳定性和高效性,还获得了更多的技术支持和市场资源。同时,雅特力还注重与同行业企业的交流与合作,共同推动电子行业的进步与发展。这些战略合作不仅增强了雅特力的综合实力和市场竞争力,也为整个电子行业的繁荣做出了积极贡献。

综上所述,雅特力公司通过技术创新、全球市场布局、企业社会责任、人才培养和战略合作等多个方面的努力,实现了从初创企业到行业领军者的华丽转身。这些故事不仅展现了雅特力的发展历程和成就,也揭示了其在电子行业中的重要地位和影响力。

Chauvin Arnoux公司的发展小趣事

到了1960年,Chauvin Arnoux推出了Monoc测试仪,这是一种带有旋转开关和统一测量刻度的测量仪器。Monoc测试仪以其简洁、直观的操作界面和精确的测量能力,迅速成为电工行业的首选测量工具。这一产品的普及,进一步巩固了Chauvin Arnoux在电气测量领域的领导地位。

Displaytech公司的发展小趣事

随着公司业务的不断发展,Displaytech于1997年在加利福尼亚州圣地亚哥成立了销售办事处,名为SEACOMP。这一举措标志着公司开始向国际市场进军。SEACOMP的成立不仅为公司带来了更多的商业机会,也促进了公司在全球范围内的技术交流与合作。

问答坊 | AI 解惑

什么是ESD?

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 简言之,ESD就是电荷的快速中和,电子工业每年花在这上面的费用有数十亿美元之多。我们知道所有的物质都由原子构成,原子中有电子和质子。当物质获得或失去电子时,它将失去电平衡而变成带负电 ...…

查看全部问答>

哪位大哥能给发个rapi.lib

想在pc和device之间通过rapi进行通信,但是找不到rapi.lib 哪位兄弟有给发一个到邮箱guopeixin@yahoo.com.cn中, 先行谢过了…

查看全部问答>

嵌入式操作系统 ecos

应届毕业生,公司要求学ecos,但是从来没有接触过,身边也没有人懂这个,在网上转了一大圈也没找到多少资料,有懂行的朋友能帮忙推荐一两本好点的书吗? 我在淘宝找了下找到了下面3本书: 《嵌入式可配置实时操作系统eCos技术及实现机制》 《嵌 ...…

查看全部问答>

启动程序与引导程序有什么区别呀????

启动程序与引导程序有什么区别呀????…

查看全部问答>

CCS 编译错误

fatal error: file \"C:\\\\CCStudio_v3.3\\\\MyProjects\\\\Motor\\\\rts2800.lib<boot.obj>\"   has a Tag_Memory_Model attribute value of \"1\" that is different than one   previously seen (\"2\"); combining in ...…

查看全部问答>

LauchPad 收到了,为什么没有图片上的那个触摸小板?严重不符啊!

LauchPad 收到了,为什么没有图片上的那个触摸小板?严重不符啊!…

查看全部问答>

MSP430经典讲解,从入门到精通

没什么可说的,最近研究MSP430,在下自己收集的东西。分享下。…

查看全部问答>

USB3.0几大优势

USB可以称得上是目前最为成功,最有优势的外设接口规范,随着时代的发展,外设的进步,USB接口规范也需要有相应的配套升级,于是所谓的“SuperSpeed USB”(超高速USB)出现了,也就是我们今天要重点介绍的USB 3.0的优势。 USB 3.0有两大最能拿得 ...…

查看全部问答>

语言和编程是两码事---从语言进步到编程

从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级 ...…

查看全部问答>

大家编程都用什么仿真器?又一个 Jlink 固件升级后变成 unknow device

在淘宝上买了两个 J-Link V8,现在两个都已经因为固件升级变成了 unknown device. J-Link 功能强大,确实是非常不错的仿真器。 大家有没有比 J-Link 觉得更好用的仿真器呢? …

查看全部问答>