stm32的定时器输入捕获与输出比较

上传人:d**** 文档编号:134092746 上传时间:2022-08-12 格式:DOCX 页数:17 大小:453.01KB
收藏 版权申诉 举报 下载
stm32的定时器输入捕获与输出比较_第1页
第1页 / 共17页
stm32的定时器输入捕获与输出比较_第2页
第2页 / 共17页
stm32的定时器输入捕获与输出比较_第3页
第3页 / 共17页
资源描述:

《stm32的定时器输入捕获与输出比较》由会员分享,可在线阅读,更多相关《stm32的定时器输入捕获与输出比较(17页珍藏版)》请在装配图网上搜索。

1、stm32的定时器输入捕获与输出比较(2015-09-28 09:26:24)转载标签: 分类: stm32it明确一点对比AD的构造,stm32有3个AD,每个AD有很多通道,使用哪个通道就配置成哪个通道,这里定时器也如此,有很多定时器TIMx,每个定 时器有很多CHx(通道),可以配置为输入捕捉测量频率用,也可以配置为输出比较-输出PWM使用输入捕捉:可以用来捕获外部事件,并为其赋予时间标记以说明此事件的发生时刻。外部事件发生的触发信号由单片机中对应的引脚输入:具体可以参考单片机的datasheet) 也可以通过模拟比较器单元来实现。时间标记可用来计算频率,占空比及信号的其他特征,以及为事

2、件创建日志住要是用来测量外部信号的频率。输出比较:定时器中计数寄存器在初始化完后会自动的计数。从bottom计数到top。并且 有不同的工作模式。另外还有个比较寄存器。一旦计数寄存器在从bottom到top计数过程中与比较寄存器匹 配则会产生比较中断(比较中断使能的情况下)。然后根据不同的工作模式计数寄存器将清零或者计数到top值。1朋友,可以解释一下输入捕获的工作原理不?很简单当你设置的捕获开始的时候CPU会将计数寄存器的值复制到捕获比较寄存器中并开始计数当再次捕捉到电平变化时这是计数寄存器中的值减去刚才复制的值就是这 段电平的持续时间,你可以设置上升沿捕获、下降沿捕获、或者上升沿下降沿都捕

3、获。它没 多大用处,最常用来测频率。计数寄存器的初值,是自己写进去的吗?是的,不过默认不要写入我如果捕获上升沿,两个值相减,代表的时两个上升沿中间那段电平的时间。对不?是的timerl有五个通道(对应五个10引脚),在同一时刻,只能捕获一个引脚的值,对不?那是肯定的,通道很像ADC通道,是可以进行切换的那输出比较的原理你可以帮我介绍一下不?这里有两个单元一个计数器单元和一个比较单元比较单元就是个双缓冲寄存器比 较单元的值是可以根据不同的模式设置的与此同时,计数器在不停的计数并不停的与比 较寄存器中的值进行比较当计数器的值与比较寄存器的值相等的时候一个比较匹配就发生 了,根据自己的设置,匹配了是

4、0电平取反、变低、还是变高,就会产生不同的波形了。比较单元的值是人为设进去的吧?是的,但是他要根据你的控制寄存器的配置,来初始化你的比较匹配寄存器15 CM Pl2:0000k W通迸0比蛟慄式这择寺龍时器的廿:卸F花TI cco 的比较位.艺抨閑呗霍比较is置辑isOOh生比栽滑静输出C(0T注比较啊换期也Sh挖凋上比较世醉出r om00:toil港霜觇用tco:Mb聖曲化皤H1弓1久.CM P2:o两歟上面这个总看不懂,好像不不止你说的那几种情况:匹配了是io电平取反、变低、还是变高,就会产生不同的波形了就是比较匹配了你要O电平怎么办?是清0还是置1 ?还是怎么样?这样才能产生波形啊要不然

5、你要比较单元有什么用呢?设置输出就是置1,清除输出就是置0,切换输出就是将原来的电平取反,对不?是的你理解的很快011 :计数器向上计数达到最大值时将引脚置1,达到0时,引脚电平置0,,对不?定时器1的输出比较模式怎么用。利用这个功能输出一个1KHZ,占空比为10%的程 序怎么写啊?求高人指点1、陪定时器1的功能为特殊功能,不是普通O在PERCFG这里2 P1SEL引脚选择3、P1DIR设为输出4、T3CC0设置周期5、T3CC1设置占空比6、T3CCTL0设置通道07、T3CCTL1设置通道1& T3CTL设为模模式9、用T3CTL打开即可*以下是用定时器做频率源用定时器测量该频率的应用程序

6、!*调 试STM32的定时器好几天了,也算是对STM32的定时器有了点清楚的认识了。我需要测量4路信号的频率然后通过DMA将信号的频率传输到存储器区域,手册说的很 明白每个定时器有4个独立通道。然后我就想能不能将这4路信号都连接到一个定时器的4 个通道上去。理论上应该是行的通的。刚开始俺使用的是TIM2的123通道,TIM4的2 通道来进行频率的测量。由于没有频率发生器,所以我用tim3作为信号源,用TIM2 ,TIM4 来进行测量就ok 了(刚好4个通道了)。请看一开始的程序,以TIM2的1,3通道为例子(2通道设置方法一样):TIM_ICI ni tStructure.TIM_ICMode

7、 二TIM_ICMode_ICAP;配置为输入捕获模式0X0 二SI!zDIAII丄nQruisi!UI:)IAII丄耀必一厳鼎Y瞬耀麻KW/ -lAia-DSdDriAIIl J9|e3S9JdDriAlir9Jnpnjisi!UiDri/|Il/ :llP9J!a uoip引&S:)|AII丄二 uoip引&S:)IAII丄nQruisi!UI:)IAII丄HTYW/ :6u!S!y-Xiue|OdDriAIU=心!引。31/11 丄 nQruisi!ui:)lAll 丄 MSW/|9uueq3-|/iu= |9uueq3-|/|ir9jnpnjisi!UiDri/|U-dVDrepoiA

8、IDriAIIl 二 epoiADIAII丄加小则”何丄甫兰齟 I IfflI 乙IAILL/ :(9Jnpnjisi!UlDriAIU 乙1/11丄)1!5:)|/|1丄鯛y/【0X0二 J91l!dDriAIIl9Jnpnjisi!UiDriAIIl耀必一厳鼎Y瞬耀麻KW/-lAia-DSdDriAIIl J9|e3S9JdDriAlir9Jnpnjisi!UiDri/|IlRlffi/ :UP9J!a uoip引&S:)|AII丄二 uoip引&S:)IAII丄anaruisi!UI:)IAII丄HCRR1的值即为信号的周期通道2 :TIM SelectInputTrigger(TIM2

9、,TIM TS TI2FP2);/参考 TIM 结构图选择滤波后的TI1输入作为触发源,触发下面程序的复位TIM SelectSlaveMode(TIM2,TIM SlaveMode Reset);复位模式-选中的触发输入(TRGI )的上升沿初始化计数器,并且产生一个更新线号TIMx-CRR2的值即为信号的周期STM32的定时器外设功能强大得超出了想像力,STM32 共有8个都为16位的定时器。其中TIM6、TIM7是基本定时器;TIM2、TIM3、TIM4、TIM5是通用定时器;TIM1和TIM8是高级定时器。这些定时器使STM32具有定时、 信号的频率测量、信号的PWM测量、PWM输出、

10、三相6步电机控制及编码器 接口等功能,都是专门为工控领域量身订做的。基本定时器:具备最基本的定时功能,下面是它的结构:我们来看看它的启动代码:void TIM2_C on figurati on (void)基本定时器TIM2的定时配置的结构体(包含定时器配置的所有元素例如:TIM_Period =计数值)TIM TimeBaseI nitTypeDef TIM TimeBaseStructure设置TIM2 CLK为72MHZ (即TIM2外设挂在APB1上,把它的时钟打开。)RCC APB1PeriphClockCmd(RCC APB1Periph TIM2 ,ENABLE),设置计数值位

11、1000TIM_TimeBaseStructure.TIM_Period = 1000;将TIM2 CLK为72MHZ除以72 = 1MHZ为定时器的计数频率TIM_TimeBaseStructure.TIM_Prescaler= 71;这个TIM_ClockDivision是设置时钟分割,这里不分割还是1MHZ的计数频率TIM_TimeBaseStructure.TIM_ClockDivisio n二 TIM_CKD_DIV1设置为向上计数模式;(计数模式有向上,向下,中央对齐1 ,中央对齐2,中央对齐3 )TIM_TimeBaseStructure.TIM_Cou nterMode二TIM

12、_Cou nterMode_Up;将配置好的设置放进stm32f10x-tim.c的库文件中TIM_TimeBaseI ni t(TIM2,&TIM_TimeBaseStructure)清除标志位TIM_ClearFlag(TIM2,TIM_FLAG_Update);使能TIM2中断TIM ITCo nfig(TIM2,TIM IT Update,ENABLE);使能TIM2外设TIM_Cmd(TIM2,ENABLE);通用定时器:就比基本定时器复杂得多了。除了基本的定时,它主要用在测量输入脉冲 的频率、脉冲宽与输出PWM脉冲的场合,还具有编码器的接口。ecu捕IV化较s寄荷睥*?jj ftt

13、ana 怪li输人虧越:; 初边锻栏阳船腿性述Hh丽 旳簡郴假营臥隼,VU_攜ih比牧2寄心更内池时钟(CKhn) ifqRCC 的 TWlxCLKTI2FP1T12FP2T11FP1 wTpFOC4TlWx_CH4ETRFETRqxh-oeaTHMxCHSHMX_tM n-0上腹涼陽TT:FP1H3=P2eeai y# .MJHEF.曳化,従備, 冋 J./ft r、ii uCC2PiC2PS d啓揑制禅TJMxGHI n和加艮.04总k曙DA卯g申ii.締床战鬥上尺】r j r 翻弦!E1芝nxiu.cm 匚匹*匕刑x_H2叫*fl动岷皱战命弃船*尼1* 七丄丫 一|_22_iJ” j .

14、: i :箱入澹惊蛊T13F户3! 衬TRC JCC4fRird宀怦TI4FP3*4和边盗险團麗T14FP41F iw ft 协!州tC3C我们来详细讲解:如何生成PWM脉冲通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出 功能时,捕获/比较寄存器TIMx_CCR被用作比较功能,下面把它简称为比较寄 存器。这里直接举例说明定时器的PWM输出工作过程若配置脉冲计数器TIMx_CNT 为向上计数,而重载寄存器TIMx_ARR(相当于库函数写法的TIM_Period的值 N)被配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动 下不断累加,当TIMx_

15、CNT的数值X大于N时,会重置TIMx_CNT数值为0 重新计数。而在TIMxCNT计数的同时,TIMxCNT的计数值X会与比较寄存器TIMx_CCR预先存储了的数值A进行比较,当脉冲计数器TIMx_CNT的数值X小于比较寄存器TIMx_CCR的值A时,输出高电平(或低电平),相反地,当脉冲计数器的数值X大于或等于比较寄存器的值A时,输出低电平(或高电平)。如此循环,得到的输出脉冲周期就为重载寄存器TIMx_ARR存储的数值(N + 1)乘以触发脉冲的时钟周期,其脉冲宽度则为比较寄存器TIMx_CCR的值A乘以触发脉冲的时钟周期,即输出PWM的占空比为A/(N + 1)。如果不想看的可以直接看

16、我标注的红色字体,就大体可以理解。卜面我们来编写具体代码和讲解:void TIM3_GPIO_Co nfig(void)配置TIM3复用输出PWM的IOGPIO I ni tTypeDefGPIO In itStructure;打开TIM3的时钟RCC APB1PeriphClockCmd(RCC APB1Periph TIM3,ENABLE)打开GPIOA和GPIOB的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOBENABLE);酉己置PA6.PA7的工作模式GPIO_InitStructure.GPIO

17、_Pin二 GPIO_Pin_6 |GPIO_Pin_7;GPIO_I ni tStructure.GPIO_Mode =GPIO_Mode_AF_PP;GPIO _In itStructure.GPIO_Speed =GPIO_Speed_50MH z;酉己置PB0.PB1的工作模式GPIO _In itStructure.GPIO_Pi n二 GPIO_Pi n_0 |GPIO_Pi n_1;GPIO _In it(GPIOB,&GPIO_I ni tStructure);void TIM3_Mode_Config(void)TIM TimeBaseInitTypeDef TIM Time

18、BaseStructure;初始化 TIM3 的时间基数单TIM OCInitTypeDef TIM OCInitStructure;/初始化 TIM3 的外设u16 CCR1_Val= 500;u16 CCR2_Val二 375;u16 CCR3_Val= 250;u16 CCR4 Val= 125/PWM信号电平跳变值(即计数到这个数值以后都是低电平之前都是高电平)TIM3的时间基数单位设置(如计数终止值:999,从0开始;计数方式:向上计数)TIM TimeBaseStructure.TIM Period= 999;TIM_TimeBaseStructure.TIM_Prescaler=

19、 0;TIM_TimeBaseStructure.TIM_ClockDivisio n二 TIM_CKD_DIV1 ;TIM_TimeBaseStructure.TIM_Cou nterMode二 TIM_Cou nterMode_Up;TIM3的外设的设置TIM_OCInitStructure.TIM_OCMode二 TIM_OCMode_PWM1; /TIM 脉冲宽度调制模式1TIM_OC In itStructure.TIM_OutputState二 TIM_OutputState_E nable这个暂时不知道,stm32固件库里没有搜到。应该是定时器输出声明使能的意思TIM_OCI n

20、i tStructure.TIM_Pulse二CCR1_Val;/设置了待装入捕获比较寄存器的脉冲TIM_OCInitStructure.TIM_OCPolarity二 TIM_OCPolarity_High;/TIM 输出比较极性高TIM_OC1I ni t(TIM3, &TIM_OC In itStructure);TIM_OC1PreloadCo nfig(TIM3,TIM_OCPreload_E nable)/使 能或者失能 TIMx 在CCR1上的预装载寄存器下面3路PWM输出和上面的一样不再解说TIM_OCI ni tStructure.TIM_OutputState二 TIM_O

21、utputState_E nable;TIM_OC In itStructure.TIM_Pulse =CCR2_Val;TIM_OC2I nit(TIM3, &TIM_OC In itStructure);TIM_OC2PreloadCo nfig(TIM3,TIM_OCPreload_E nable);TIM_OCI ni tStructure.TIM_OutputState二 TIM_OutputState_E nable;TIM_OCI nitStructure.TIM_Pulse =CCR3_Val;TIM_OC3PreloadCo nfig(TIM3,TIM_OCPreload_E

22、 nable);TIM_OCI ni tStructure.TIM_OutputState二 TIM_OutputState_E nable;TIM_OC In itStructure.TIM_Pulse 二CCR4_Val;TIM_OC4I ni t(TIM3, &TIM_OCI nitStructure);TIM_OC4PreloadCo nfig(TIM3,TIM_OCPreload_E nable);TIM ARRPreloadCo nfig(TIM3,ENABLE);使能 TIM3 重载寄存器 ARRTIM Cmd(TIM3,ENABLE); 使能 TIM3导太累了边看边写都这个点了

23、 2014年7月27日0:24:13在自己床上写的。下面是看看我们程序达到的4路PWM的效果:.廣. .loflK AnatiMr |T l*53?j tLJli (PORTA t 0*00&030:1 7 6 CxSO) 、7aLA1KPT3 & 碍隔斶1-4hCprvmjin-NameLocabaftiJkJErypeM mM诚EWJLE5占inthQtaH Stick = LpeiB | Rivkm则 L魚嶋鑫 i amMM-iiul-l -.眉丁站血統g 检 丄岂翅File EW Vrt Project Ftssh Debug Prnp+HralF Txfc 列冷押 nEsw Help

24、匸詡i 屯*-?审斤a护國攣rsii_汎ft I I ?i iF ci1 :1 勺 I 圍陲 E 監幫i 曲 f 3 司 J3 fjfL: If S =J Ltd 日 rS STARTUP目?tartup_5tn-3J 口 CMEI 国匚.i FWL9 日白厘er_m rtiBiiMU 5isiftth ;1J 5tmJ2F10M.二Q UrtiiSFlfti. 5谢Q訐睜DOCr. I口 rmtW 囂可以看到明显占空比不同的4路pwm波。这一节终于讲完,个人觉得敲一遍代码学起来还是蛮容易懂的。希望看到的人也能搞懂。最后补充一点pwm具体能干什么?特别是对广大电子DIY爱好者的应用: 智能小车的电机控制:我们可以利用pwm来控制我们的智能小车的车速; 机器人:给“机器人关节”舵机周期一定(我以前玩过具体多少毫秒忘记了) pwm波就可以控制舵机的转动角度了;呼吸灯:输入不同的pwm波就可以达到明暗渐明渐暗的

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!