stm32脉冲方波捕获(共10页).doc
《stm32脉冲方波捕获(共10页).doc》由会员分享,可在线阅读,更多相关《stm32脉冲方波捕获(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1、stm32脉冲方波捕获脉冲方波长度捕获 a)目的:基础PWM输入也叫捕获,以及中断配合应用。使用前一章的输出管脚PB1(19脚),直接使用跳线连接输入的PA3(13脚),配置为TIM2_CH4,进行实验。 b)对于简单的PWM输入应用,暂时无需考虑TIM1的高级功能之区别,按照目前我的应用目标其实只需要采集高电平宽度,而不必知道周期,所以并不采用PWM输入模式,而是普通脉宽捕获模式。 c)初始化函数定义: void TIM_Configuration(void); /定义TIM初始化函数 d)初始化函数调用: TIM_Configuration(); /TIM初始
2、化函数调用 e)初始化函数,不同于前面模块,TIM的CAP初始化分为三部分计时器基本初始化、通道初始化和时钟启动初始化: void TIM_Configuration(void)/TIM2的CAP初始化函数 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/定时器初始化结构 TIM_ICInitTypeDef TIM_ICInitStructure; /通道输入初始化结构 /TIM2输出初始化 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; /周期0FFFF TIM_TimeBaseStructure.TIM_P
3、rescaler = 5; /时钟分频 TIM_TimeBaseStructure.TIM_ClockDivision = 0; /时钟分割 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/基本初始化 /TIM2通道的捕捉初始化 TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;/通道选择 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICP
4、olarity_Falling;/下降沿 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;/管脚与寄存器对应关系 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;/分频器 TIM_ICInitStructure.TIM_ICFilter = 0x4; /滤波设置,经历几个周期跳变认定波形稳定0x00xF TIM_ICInit(TIM2, &TIM_ICInitStructure); /初始化 TIM_SelectInputTrigger(TIM2, TIM_T
5、S_TI2FP2); /选择时钟触发源 TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);/触发方式 TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); /启动定时器的被动触发 TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE); /打开中断 TIM_Cmd(TIM2, ENABLE); /启动TIM2 f)RCC初始化函数中加入TIM时钟开启: RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM3, ENABLE); g)
6、GPIO里面将输入和输出管脚模式进行设置。IN_FLOATING,50MHz。 h)使用中断的话在NVIC里添加如下代码: /打开TIM中断(与前一章相同) NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; i)简单应用: 变量
7、 = TIM_GetCapture4(TIM2); j)注意事项: i.由于我的需求只跟高电平宽度有关,所以避免了使用PWM输入模式,这样可以每个管脚捕捉一路信号。如果使用PWM模式,每一路需要占用两个寄存器,所以一个定时器只能同时使用两路PWM输入。 ii.由于捕捉需要触发启动定时器,所以PWM输出与捕捉不容易在同一个TIM通道上实现。如果必须的话只能增加计数溢出的相关代码。 iii.有些程序省略了捕捉通道的初始化代码,这是不对的 iv.在基本计时器初始化代码里面注意选择适当的计数器长度,最好让波形长度不要长于一个计数周期,否则需要增加溢出代码很麻烦。一个计数周期的长度计算跟如下几个参数有关
8、: (1)RCC初始化代码里面的RCC_PCLKxConfig,这是TIM的基础时钟源与系统时钟的关系。 (2)TIM初始化的TIM_Period,这是计数周期的值 (3)TIM初始化的TIM_Prescaler,这是计数周期的倍频计数器,相当于调节计数周期,可以使TIM_Period尽量大,提高计数精度。2、使用STM32的TIMER捕获功能,求取输入PWM信号的周期,误差很大,请求解决!使用的是TIMER2的CH1通道,PWM信号接在PA0脚。输入PWM的周期信号为100Hz,根据捕获值计算出来却是105Hz,这误差也太大了吧!哪位高手知道是什么原因呀,指点一下呀,万分感谢呀!下面是我的相
9、关部分程序:1、时钟部分,TIMER2的时钟频率,我是初始化为36M. RCC_PCLK1Config(RCC_HCLK_Div2); /设置低速AHB时钟=系统时钟/2 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); / 倍频系数为9 PLLCLK=8*9=722、TIMER初始化 TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period = 65535; TIM_TimeBaseStructure.TIM_Prescaler = 18; TIM_TimeBaseStructure.TIM_
10、ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
11、TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV4; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_PWMIConfig(TIM2, &TIM_ICInitStructure); TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1); TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); /复位模式为从模式 TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable)
12、; /使能主从模式 TIM_Cmd(TIM2, ENABLE); /使能TIM2计数器 TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE); /使能CC2中断请求3、TIMER中断处理void TIM2_IRQHandler(void) /* Clear TIM2 Capture compare interrupt pending bit */ TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); /* Get the Input Capture value */ IC2_Value = TIM_GetCapture2(TIM2);3、调试
13、的过程中,总能遇到一些问题,很庆幸能遇到那么多的问题,也许这就是最好的学习过程:继续我的笔记: 在main函数中,文件名:main.c 对TIM2的CH1,CH2配置如下: TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP; /配置为输入捕获模式 TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; /选择通道1 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; /输入上升沿捕获 TIM_ICInitStructure.TIM_ICS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32 脉冲 方波 捕获 10
限制150内