历史上的今天
返回首页

历史上的今天

今天是:2025年02月10日(星期一)

正在发生

2020年02月10日 | STM32F103之Timer2PWM输出

2020-02-10 来源: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);

}

推荐阅读

史海拾趣

ADMOS公司的发展小趣事

为了进一步提升公司的竞争力和影响力,ADMOS公司积极寻求与其他行业领导者的战略合作。通过与芯片设计、封装测试等领域的顶尖企业建立战略合作关系,ADMOS得以共享资源、互通有无,共同推动电子行业的进步和发展。这种合作模式不仅加速了ADMOS公司的成长步伐,也为整个电子行业的繁荣做出了贡献。

请注意,以上故事均为虚构,旨在展示一个可能的ADMOS公司发展历程。实际情况可能有所不同,具体细节需参考ADMOS公司的官方资料和相关报道。

Brand-Rex公司的发展小趣事

Brand-Rex一直致力于技术创新和产品研发。其专利铜线绞合技术大大改善了结构回路损耗,降低了衰减;同时,利用电缆内十字截面塑胶隔离层把四组双绞线分隔开,减少了近端串扰。这些技术创新不仅提升了产品的性能和质量,还使Brand-Rex在行业中树立了技术领先的形象。此外,Brand-Rex还积极参与国际标准的制定和推广工作,为全球布线行业的发展做出了重要贡献。

3M公司的发展小趣事

Brand-Rex作为欧洲首屈一指的布线品牌,其起步可追溯到公司成立之初。凭借其世界级的数据电缆制造技术和不断创新的产品线,Brand-Rex迅速在欧洲市场崭露头角。在2008至2010年间,Brand-Rex连续三年被公认为英国首屈一指的铜缆产品生产商,其卓越的产品和客户服务使其在竞争激烈的市场中脱颖而出。此外,Brand-Rex还凭借其在外销和总体销售利润方面的出色表现,成为英国销售额逐年提升的关键因素,进一步巩固了其在欧洲市场的领导地位。

aconno公司的发展小趣事

在追求经济效益的同时,aconno公司也积极履行社会责任,致力于实现可持续发展。公司注重环保和节能,采用环保材料和工艺,减少生产过程中的污染排放。此外,aconno还积极参与社会公益事业,为弱势群体提供帮助和支持。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上便是关于aconno公司在电子行业中发展起来的5个相关故事。这些故事展示了aconno在创新、品质、市场、人才和社会责任等方面的努力和成就,为公司的长远发展奠定了坚实的基础。

DDP Engineered LED Solutions公司的发展小趣事

在LED照明产品的生产过程中,DDP Engineered LED Solutions公司始终坚守品质控制的原则。公司建立了严格的生产流程和质检标准,确保每一件产品都符合质量要求。同时,公司还积极引入先进的生产设备和管理系统,提升生产效率和产品质量。正是这些努力,让DDP的产品在市场上赢得了客户的信任和好评,为公司赢得了良好的口碑。

Advanced Technology Corp公司的发展小趣事

为了进一步提升市场份额和品牌影响力,ATC公司积极开展市场拓展活动。公司加强与国际市场的联系,与多家知名企业建立了战略合作关系,共同开拓新的市场领域。同时,ATC公司还注重品牌塑造,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和美誉度。这些努力使得ATC公司在全球电子市场中占据了一席之地。

问答坊 | AI 解惑

电子密码锁

要在原图中加入二极管指示电路,每按一个键二极管闪烁一下,请问如何画图? 开锁电路 用继电器如何设计一个??? 拜托帮帮忙啊!很着急!…

查看全部问答>

使用synplify综合遇到的两点疑问

请教如下两个问题:       1. synplify不能综合状态机的“when others”状态:我用的是VHDL,编码风格中要求对case语句的使用要做到取值完全覆盖,即要加一个“when others”的判断(我想Verilog也一样吧,用default?),用c ...…

查看全部问答>

求助!编译U-BOOT出错

小弟我最近在搞U-BOOT移植,但最后执行make后,提示arm-linux-gcc找不到, 我以为是环境变量的问题,结果用export $PATH命令看了一下,有这个目录, 但在最后却出现一个“not a valid identifier\",这个我想问一下是什么原因啊, 我的uboot目录 ...…

查看全部问答>

2440的中断问题!

最近调试s3c2440,中断这里一直困扰着我 开始是调flash的时候,使能R/B中断,程序一运行就跑飞了,开始不知道原因,改作查询等待模式。 现在调试外部中断的时候这个问题又出现了 单步执行结果显示,2440捕捉到这个外部中断了,但是就是不去运行 ...…

查看全部问答>

进入不了PendSV_Handler

我使用STM32F103VC的芯片跑UCOS。但是执行了如下的代码就是进入不了PendSV_Handler。用软件仿真还是可以的,但是烧到板上就不可以了。执行这段代码的时候BASEPRI = 0,PRIMASK = 0.这应该没有关中断吧。为什么就是进入不了 ...…

查看全部问答>

问个DMA的问题

我用c6711做一个图像采集的卡,数据从FIFO中输入到DSP外接SDRAM中,二者都映射到DSP存储空间,我请问一下,可不可以使用DMA方式实现FIFO与SDRAM间的直接数据传输?(不进DSP),应该怎样做?可能我说得不是很明白,我是想使用DSP控制FIFO与SDRAM间 ...…

查看全部问答>

心情

天天加班,这领导当的真累!!…

查看全部问答>

团购的DK-LM3S9B96连接线被折断了

我参加了本次的团购,打开包装看到板子后,我惊呆了,液晶屏和板子之间的连接线断开了一部分,挺好的板子怎么会出现这种情况呢?上个照片吧 [ 本帖最后由 yzl624358 于 2011-11-1 20:37 编辑 ]…

查看全部问答>

献给新手 改变从这里开始

这是我在网上看到的一篇帖子,作者是古木(胡斌)老师写的,作为一名在读学生,我也感到迷茫,我也为自己曾经的无所事事而感到无可奈何,也想在一念之间将所有的东西都学会,然后找到高薪工作,但往往是欲速则不达,古木老师的这篇文章是他经验的总 ...…

查看全部问答>

STM32以太网数据接收中断函数是那个?

我正在使用stm32_eth_lib固件库,我希望能将以太网接收到的数据通过USB转发到上位机(我只需要将以太网物理层接收到的一帧数据经过USB转发到上位机,不需要经过协议栈)。但是 找不到以太网接收到数据后的中断处理函数,以太网是数据是通过DMA通道传 ...…

查看全部问答>