STM32单片机输出指定个数脉冲

1.硬件平台

单片机:stm32f407

PWM脉冲:Timer2 CH2

脉冲计数:Timer3

2.定时器外部触发同步

TIMx定时器以下列模式与外部触发实现同步:复位模式、门控模式和触发模式。

2.1复位模式

        当触发输入信号发生变化时,计数器及其预分频器可重新初始化。此外,如果 TIMx_CR1
寄存器中的 URS 位处于低电平,则会生成更新事件 UEV。然后,所有预装载寄存器
( TIMx_ARR 和 TIMx_CCRx)都将更新。

2.2门控模式

        输入信号的电平可用来使能计数器。

2.3触发模式

        所选输入上发生某一事件时可以启动计数器。

        我们的目标是通过Timer3对Timer2 CH2的PWM个数进行计数,因此,门控模式符合要求。触发输入 (TRGI) 为高电平时使能计数器时钟。只要触发输入变为低电平,计数器立即停止计数(但不复位)。计数器的启动和停止都是受控的。
 

3.定时器内部触发连接

从TIMITR0(TS=000)ITR1(TS=001)ITR2(TS=010)ITR3(TS=011)
TIM2TIM1TIM8TIM3TIM4
TIM3TIM1TIM2TIM5TIM4
TIM4TIM1TIM2TIM3TIM8
TIM5TIM2TIM3TIM4TIM8

        Timer3计数触发来源是Timer2,查上表可知Timer3的触发源为ITR1。

4.stm32cubeMX的定时器配置

Timer2定时器的配置决定了PWM波形,由于定时器时钟为84MHz,根据配置内容可以得知

频率=定时器时钟/预分频/计数周期=84MHz/84/5=200KHz

占空比=(5-2)/5=60%

Mode可以选择PWM mode1和PWM mode2,选择PWM mode2时输出是选择PWM mode1时输出的反相,影响占空比。
Pulse选择比较时钟数,影响占空比。
CH Polarity设置有效极性,影响占空比。

计数需要开启中断。

5.相关代码改动

5.1PWM启动

 配置发送脉冲个数

从定时器启动中断

PWM启动脉冲发送

	__HAL_TIM_SET_AUTORELOAD(&htim3,10-1);
	HAL_TIM_Base_Start_IT(&htim3);
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);

5.2PWM关闭

void TIM3_IRQHandler(void)
{
	if(__HAL_TIM_GET_FLAG(&htim3,TIM_IT_UPDATE)!=RESET)
	{
		__HAL_TIM_CLEAR_FLAG(&htim3,TIM_IT_UPDATE);
			HAL_TIM_PWM_Stop(&htim2,TIM_CHANNEL_2);
	}
  HAL_TIM_IRQHandler(&htim3);
}

6.运行

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
具体操作要求如下: 以给定频率输出脉冲脉冲数无限制 以给定频率f、输出n个脉冲 相对定位 相对定位+绝对定位 脉冲输出PORTA.0 方向信号输出PORTB.5 模仿PLC定位指令 可以作为简易运动控制器控制伺服电机 脉冲两种目的 1)速度控制 2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方 脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获得送的脉冲数,有下面4种手段 1)每一个脉冲,做一次中断计数 2)根据送的频率×送的时间,获得脉冲数量,对于变速的脉冲,可以累计积分的方法来获得总脉冲 3)一个定时器作为主脉冲,另外一个定时器作为从,对送的脉冲计数 4)使用DMA方式,例如共送1000个脉冲,那么定义u16 per[1001],每一个脉冲,dma会从数组中更新下一个占空比字,数组最后一个字为0,表示停脉冲 上面4种方法的用途和特点 1)对于低速率脉冲比较好,可以说低速脉冲的首选,例如10Khz以下的,否则中断占用太多的cpu,这种方法要注意将中断优先级提高,否则会丢计数, 2)用作定时的计时精确高,可以允许有脉冲计数丢失的情况 3)主从方式,需额外的定时器来计数,例如tim1脉冲 tim2计数,最方便的方式,无论高速低速即可,同时占用cpu最低,只是要占用多一个定时器 4)DMA方式也算是一个很确定的方式,不会丢失脉冲,但是高速的时候,会较多的占用内部总线同时会使用一个多余的DMA控制器,而且有个缺点,就是使用起来比较复杂,没有达到KISS原则 个人推荐方式,低速时中断方式,如果不知高速还是低速,则使用主从方式。具体的方式需要根据资源和需求来确定。 stm32定时器算是比较复杂的器件,而且用户要较多的介入底层,希望将来st公司能够能够简化器件的使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值