历史上的今天
返回首页

历史上的今天

今天是:2025年01月02日(星期四)

正在发生

2019年01月02日 | STM32F107的通用定时器PWM实验总结

2019-01-02 来源:eefocus

1.     STM32F107的通用定时器是指:  TIM2、TIM3、TIM4、TIM5、


2.     STM32F107的通用定时器(TIM2、TIM3、TIM4、TIM5)的模式有向上计数、向下计数、中央对齐模式。


向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。


向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。


中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。


3.     STM32F107的通用定时器的时钟选择有多种,一般使用RCC提供的内部时钟TIMxCLK,  由APB1时钟分频提供。


4.     状态标志位获取和清除


FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_tTIM_FLAG);


void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);


ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_tTIM_IT);


void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_tTIM_IT);


5.     PWM模式 :脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CRRx寄存器确定占空比的信号。


6.      可能要设置GPIO的复用或者重映射功能。void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_tTIM_OCPreload);


void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx,FunctionalState NewState)


7.     void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalStateNewState);


简单的说,ARPE=1,ARR立即生效。。。APRE=0,ARR下个比较周期生效。


8.     void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef*TIM_OCInitStruct);


 定时器输出函数初始化设置,主要有:


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //PWM模式2


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


TIM_OCInitStructure. TIM_Pulse=100;


TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性:TIM输出比较极性高


TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3OC2


9.     设置比较函数voidTIM_SetCompareX(TIM_TypeDef* TIMx, uint16_t Compare2);




定时器PWM实现步骤:


1.       使能定时器3和相关IO口时钟。


 使能定时器3时钟:RCC_APB1PeriphClockCmd();


  使能GPIOB时钟:RCC_APB2PeriphClockCmd();


2.        初始化IO口为复用功能输出。函数:GPIO_Init();


 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      


3.     这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,


   所以需要开启AFIO时钟。同时设置重映射。


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);


  GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);


4.        初始化定时器:ARR,PSC等:TIM_TimeBaseInit();


5.       初始化输出比较参数:TIM_OC2Init();


6.       使能预装载寄存器: TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);


7.       使能定时器。TIM_Cmd();


8.      不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();


1)    TIM_TimeBaseStructure.TIM_ClockDivision这一行代码是干吗的啊


   CKD[1:0]: 时钟分频因子 (Clock division) 这2位定义在定时器时钟(CK_INT)频率、死区时间和由死区发生器与数字滤波器(ETR,TIx)所用的采样时钟之间的分频比例。 00: tDTS = tCK_INT01 : tDTS = 2 x tCK_INT10: tDTS = 4 x tCK_INT11 :保留,不要使用这个配置


用来屏蔽一些不需要的毛刺的。比如你数字滤波器的频率为1M,N=8,则频率大于1MHz/8=125KHz(持续时间小于8us)的脉冲都会被忽略。可以用在按键消抖之类的。


推荐阅读

史海拾趣

Chen Yang Technologies GmbH & Co KG公司的发展小趣事

Chen Yang Technologies最初是一家专注于半导体芯片研发的小型公司。在某个关键时期,公司成功研发出了一种低功耗、高性能的芯片技术,这一技术突破立即引起了市场的广泛关注。凭借这一技术,Chen Yang Technologies迅速扩大了其产品线,并开始向全球范围内的电子设备制造商供应芯片。随着市场份额的逐步增长,公司逐渐在电子行业中建立了自己的地位。

Hamlin ( Littelfuse )公司的发展小趣事

在快速发展的过程中,Chen Yang Technologies始终重视内部管理和人才培养。公司推行了一系列创新的管理理念和措施,如扁平化管理、项目制运作等,这些措施有效提高了工作效率和团队协作能力。同时,公司还注重人才培养和引进,通过设立激励机制、提供培训和发展机会等方式,吸引和留住了一批优秀的技术人才和管理人才。

Concord Semiconductor Corp公司的发展小趣事

随着业务规模的不断扩大,Concord Semiconductor Corp开始将市场拓展作为重要的发展战略。公司通过参加国际电子展会、举办技术研讨会等方式,积极宣传自己的产品和技术,提升品牌知名度。同时,公司还针对不同地区的市场需求,推出定制化产品和服务,进一步巩固了市场地位。

Emulation Technology Inc公司的发展小趣事

随着技术的不断成熟,Emulation开始积极寻求与电子行业的合作伙伴建立战略合作关系。公司先后与多家知名半导体厂商、设备制造商以及系统集成商签订了合作协议,共同推动模拟和仿真技术在各个领域的应用。这些合作不仅拓宽了Emulation的市场渠道,还为公司带来了更多的创新机会。

AMI [American Megatrends Inc]公司的发展小趣事

Emulation自创立之初,就专注于模拟和仿真技术的研发。在成立初期,公司成功开发出一款具有革命性的电子系统模拟软件,该软件能够准确模拟电子设备的性能和行为,为工程师们提供了强大的设计工具。这一创新技术迅速获得了市场的认可,成为Emulation公司发展的基石。

AMD(超微)公司的发展小趣事

作为一家在电子行业具有影响力的企业,Emulation始终关注社会责任和可持续发展。公司积极参与各种公益活动,为当地社区的发展做出了贡献。同时,Emulation还注重环保和节能,致力于推动绿色电子产品的设计和生产。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

EAVS商铺报警监控工程技术方案

前言: 随着经济的快速发展,我国零售业市场不断的扩大,单店铺经营的从业者愈来愈多,不但丰富了产品的渠道供应,满足消费者的就近消费的需求,在另外一方面:也大大解决了社会就业的问题和个人投资的取向问题。总之,增加了市场的繁荣和 ...…

查看全部问答>

wince 5.0 stepldr+eboot引导OS,eboot起不来,大家指导下

把stepldr.nb1烧到nand flash block0;eboot.nb0烧到nand flash block2.通过串口信息可以看到stepldr正常运行,可eboot没有反应. stepldr.bib 如下: MEMORY ;   Name      Start     Size  ...…

查看全部问答>

做modbus通讯. 一个PC作为从机(服务器),它的一个com1口能不能连接多个主机(客户端)??

做modbus通讯. 一个PC作为从机(服务器),它的一个com1口能不能连接多个主机(客户端)??…

查看全部问答>

关于如何网络协议的学习,tcp/ip???请熟悉tcp/ip的哥们指点一下

想学习tcp/ip协议,但不知道如何开始? 有几个问题 1:在学习中需要注意的问题 2:网络的5层都要特别关注么?对于嵌入式领域而言 3:对于嵌入式领域而言有什么特别需要注意的?…

查看全部问答>

关于STM32USB中的SetEPTxStatus(ENDP1,EP_TX_NAK)问题USB,NAK

看过本论坛上的一个帖子https://bbs.eeworld.com.cn/redirect.php?tid=110546&goto=lastpost,里面提到“STM32接收到一个IN事件后发送完毕软件不用把端点设成NAK。硬件在每次成功的传输之后都会把端点的状态设为NAK。只需在下次要发送的时候 ...…

查看全部问答>

视频与影像指南

德州仪器 (TI) 在视频领域拥有超过 25 年的丰富经验,产品涵盖视频链的各个环节,包含从原始内容创建到最终欣赏体验的全过程。   客户可充分利用 TI 在视频压缩与码制转换方面的丰富技术,以极低的成本向市场快速推出各种差异化的产品。TI ...…

查看全部问答>

CooCox工具简介——免费和开源的ARM嵌入式开发工具

CooCox成立于2009年初,致力于为ARM开发者提供免费和开源的嵌入式开发工具。CooCox开发了大量基于网络的组件,让嵌入式开发如搭积木般简单。CooCox希望能和所有ARM爱好者一起搭建一个贡献与分享的交流平台。   CooCox工具包括一整套的工具 ...…

查看全部问答>

spi 驱动陀螺仪程序

陀螺仪:lsm330dl单片机; stm32f103vct6还需要一个软件程序提供陀螺仪XYZ轴的角度读出 …

查看全部问答>

如何测试开关电源的效率

谁能告诉我如何测试开关电源的效率?非常感谢…

查看全部问答>

滤波器实现方波转精密正弦波

先有一频率3K左右的方波,要把其转换为精密的正弦波,用max275怎么实现,别的芯片也可以,跪求电路图!邮箱:124548443@qq.com [ 本帖最后由 lzb124548443 于 2013-5-28 10:20 编辑 ]…

查看全部问答>