中断函数里实现1S的定时处理
2,输入捕获功能:I
putCapture这个功能可以很方便的计算出输入信号的频率,兼具外部计数以及内部定时的功能手册上的实现步骤:是以配置TIM1的通道1TI1为例的●选择有效输入端:TIMx_CCR1必须连接到TI1输入,所以写入TIMx_CCR1寄存器中的CC1S01,只要CC1S不为’00’,通道被配置为输入,并且TIMx_CCR1寄存器变为只读。●根据输入信号的特点,配置输入滤波器为所需的带宽即输入为TIx时,输入滤波器控制位是TIMx_CCMRx寄存器中的ICxF位。假设输入信号在最多5个内部时钟周期的时间内抖动,我们须配置滤波器的带宽长于5个时钟周期;因此我们可以以fDTS频率连续采样8次,以确认在TI1上一次真实的边沿变换,即在TIMx_CCMR1寄存器中写入IC1F0011。无需滤波的话写入0即可●选择TI1通道的有效转换边沿,在TIMx_CCER寄存器中写入CC1P0上升沿。●配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止写TIMx_CCMR1寄存器的IC1PS00。●设置TIMx_CCER寄存器的CC1E1,允许捕获计数器的值到捕获寄存器中。●如果需要,通过设置TIMx_DIER寄存器中的CC1IE位允许相关中断请求,通过设置TIMx_DIER寄存器中的CC1DE位允许DMA请求。当发生一个输入捕获时:●产生有效的电平转换时,计数器的值被传送到TIMx_CCR1寄存器。●CC1IF标志被设置中断标志。当发生至少2个连续的捕获时,而CC1IF未曾被清除,CC1OF也被置1。●如设置了CC1IE位,则会产生一个中断。●如设置了CC1DE位,则还会产生一个DMA请求。为了处理捕获溢出,建议在读出捕获溢出标志之前读取数据,这是为了避免丢失在读出捕获溢出标志之后和读取数据之前可能产生的捕获溢出信息。
以下是配置TIM1的通道4TI4的程序代码voidI
putCapture_Co
figuratio
voidGPIO_I
itTypeDefGPIO_I
itStructureRCC_APB2PeriphClockCmdRCC_APB2Periph_TIM1RCC_APB2Periph_GPIOAENABLE打开TIM1和GPA的时钟GPIO_I
itStructureGPIO_Pi
GPIO_Pi
_11GPIO_I
itStructureGPIO_ModeGPIO_Mode_IN_FLOATINGGPIO_I
itStructureGPIO_SpeedGPIO_Speed_50MHzGPIO_I
itGPIOAGPIO_I
itStructure配置通道4为浮空输入
TIM1ARR30000配置自动重装载值,不配置即为默认0xffffTIM1PSC14399配置计数器预分频14399Tc
t20us。这个不配置的话默认不分频,那么捕获一次计数值变化非常大,如果采集信号宽度不够小的话计数器会产生溢出,给计算频
f率带来麻烦,最好是根据信号宽度来配置分频比
TIM1CCMR20X0000设置滤波器为0,不滤波TIM1CCMR20Xf3FF设置捕获预分r