继续!
上一次更新:
更新VII:Firmware Lib在EK_STM32F上的学习体会(SPI/SysTick)
=============================TIM===================================
TIM Example 1 本例展示了如何利用外设TIM2来产生四路频率不同的信号。
TIM2时钟设置为36MHz,预分频设置为2,使用输出比较-翻转模式(Output Compare Toggle Mode)。
TIM2计数器时钟可表达为:TIM2 counter clock = TIMxCLK / (Prescaler +1) = 12 MHz
设置TIM2_CCR1寄存器值为32768,则CC1更新频率为TIM2计数器时钟频率除以CCR1寄存器值,为366.2 Hz。因此,TIM2通道1可产生一个频率为183.1 Hz的周期信号。
同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,TIM2通道2可产生一个频率为366.3 Hz的周期信号;TIM2通道3可产生一个频率为732.4 Hz的周期信号;TIM2通道4可产生一个频率为1464.8 Hz的周期信号。
可以通过示波器观察各路输出。
TIM Example 2
本例展示了如何利用外设TIM2来产生四路时延不同的信号。可以通过观察管脚PC.06上输出上升沿和TIM2_CHx输出上升沿的时间差来得到这个时延。
TIM2时钟设置为36MHz,预分频设置为35999,使用输出比较-主动模式(Output Compare Active Mode)。
TIM2计数器时钟可表达为:TIM2 counter clock = TIMxCLK / (Prescaler +1) = 1 KHz
设置TIM2_CCR1寄存器值为1000,则TIM2_CH1时延为CCR1寄存器值除以TIM2计数器时钟频率,为1000毫秒。因此,TIM2通道1可产生时延为1000ms的信号。
同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,TIM2通道2可产生时延为500ms的信号;TIM2通道3可产生时延为250ms的信号;TIM2通道4可产生时延为125ms的信号。
可以通过示波器观察各路输出。
TIM Example 3
本例展示了如何设置TIM工作在输出比较-非主动模式(Output Compare Inactive mode),并产生相应的中断。
TIM2时钟设置为36MHz,预分频设置为35999,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 1 KHz
设置TIM2_CCR1寄存器值为1000, CCR1寄存器值1000除以TIM2计数器时钟频率1KHz,为1000毫秒。因此,经过1000毫秒的时延,置PC.06输出为低电平。
同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,经过500毫秒的时延,置PC.07输出为低电平;经过250毫秒的时延,置PC.08输出为低电平;经过125毫秒的时延,置PC.09输出为低电平。
输出比较寄存器的值决定时延的大小,当计数器的值小于这个值的时候,点亮与PC.06-PC.09相连的LED;当计数器的值达到这个值得时候,产生中断,在TIM2的4个通道相应的中断里,把它们一一关闭。
TIM Example 4
本例展示了如何设置TIM工作在脉冲宽度调制模式(PWM Pulse Width Modulation mode)。
TIM3时钟设置为36MHz,预分频设置为0,TIM2计数器时钟可表达为: TIM3 counter clock = TIMxCLK / (Prescaler +1) = 36 MHz
设置TIM3_CCR1寄存器值为500,则TIM3通道1产生一个频率为36MHz,占空比(duty cycle)为50%的PWM信号。
同理,根据寄存器TIM3_CCR2 、TIM3_CCR3和 TIM3_CCR4的值,TIM3通道2产生一个频率为36MHz,占空比(duty cycle)为37.5%的PWM信号;TIM3通道1产生一个频率为36MHz,占空比(duty cycle)为25%的PWM信号;TIM3通道1产生一个频率为36MHz,占空比(duty cycle)为12.5%的PWM信号。
可以通过示波器,在相应管脚观察到输出信号。
TIM Example 5
本例展示了如何设置TIM工作在输出比较-时间模式(Output Compare Timing mode),产生相应的中断,以在不同通道上产生不同的时间基数。
TIM2时钟设置为36MHz,预分频设置为4,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 7.2 MHz 设置TIM2_CCR1寄存器值为49152,则CC1更新频率为TIM2计数器时钟频率(7.2 MHz)除以CCR1寄存器值(49152),为146.48 Hz。因此,TIM2通道1每6.8ms产生一个中断。 同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,TIM2通道2每4.55ms产生一个中断;TIM2通道3每2.27ms产生一个中断;TIM2通道4每1.13ms产生一个中断。 当计数器的值达到出数比较寄存器(Output compare register即TIMx_CCRx)的值时,产生输出比较中断(Output Compare interrupt),在中断历程中,按以下频率翻转输出管脚PC.06 – PC.09的状态: - PC.06: 73.24Hz (CC1 通道1) - PC.07: 109.8Hz (CC2通道2) - PC.08: 219.7Hz (CC3通道3) - PC.09: 439.4Hz (CC4通道4)
在EKSTM32F上,应当改PC.06 – PC.09为PC.04 – PC.07。与它们相连的LED会以不同的频率闪耀,不过,由于频率相对高了,肉眼是观察不出区别的。
TIM Example 6
本例展示了如何设置TIM,用它来测量一个外部输入信号的频率和占空比。
TIM2时钟设置为72MHz,预分频设置为0,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 72 MHz,因此可测量的最小频率值为1100Hz。
设置TIM2工作在PWM输入模式(PWM Input Mode),把外部信号作为输入连接到TIM2通道2。
利用TIM2计数器中断来测量信号的频率和占空比。在TIM2_IRQHandler中,计算信号的频率和占空比,方法如下:
变量"Frequency"为由下式得到的外部信号频率: Frequency = TIM2 counter clock / TIM2_CCR2 单位Hz 变量"Duty_Cycle"为由下式得到的外部信号占空比: Duty_Cycle = (TIM2_CCR1*100)/(TIM2_CCR2) 单位%
TIM Example 7
本例展示了如何使用外设TIM在定时器输入管脚接收到一个上升沿以后,产生一个单脉冲模式(One pulse Mode)的信号。
TIM2时钟设置为72MHz,预分频设置为1,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 32 MHz。 设自动重载值(TIM2->ARR)为65535,因此可以触发TIM2的输入信号频率不应超过500Hz。
配置TIM2如下: 使用单脉冲模式,把外部输入信号连接到管脚TIM2 CH2 (PA.01),设它的上升沿为触发沿,单脉冲信号从管脚TIM2_CH1 (PA.00)输出。
TIM_Pulse的值决定单脉冲时延的值,如下式这个值固定为455.08 us: delay = CCR1/TIM2 counter clock = 455.08 us
TIM_Period - TIM_Pulse的值决定单脉冲值,如下式这个值固定为1.365ms: One Pulse value = (TIM_Period - TIM_Pulse)/TIM2 counter clock = 1.365 ms
TIM Example 8
TIM4_CCR1/(TIM4_ARR + 1) = 60%
本例展示了如何在并联模式下同步多个定时期(TIM)外设。
在本例程中,使用3个定时器,并联模式下同步它们:
1. 设置TIM2为主定时器 - 使用PWM模式 - TIM2更新事项作为触发输出
2. 设置TIM3、TIM4为TIM2的从定时器 - 使用PWM模式 - 使用ITR1(TIM2)作为这2个定时器的触发输入 - 使用门控模式(Gated mode),从定时器的启动和停止都由主定时器的触发输出信号 (Master trigger output signal)控制。
TIMxCLK固定为72 MHz,TIM2计数器时钟为72 MHz。
主定时器TIM2输出频率为TIM2频率(TIM2 frequency), TIM2 frequency = TIM2 counter clock/ (TIM2 period + 1) = 281.250 KHz; 占空比为TIM2_CCR1/(TIM2_ARR + 1) = 25%的信号。
TIM3输出频率为 (TIM2 frequency)/ (TIM3 period + 1) = 28.1250 KHz; 占空比为TIM3_CCR1/(TIM3_ARR + 1) = 30%的信号。
TIM4输出频率为 (TIM2 frequency)/ (TIM4 period + 1) = 56.250 KHz; 占空比为TIM4_CCR1/(TIM4_ARR + 1) = 60%的信号。
TIM Example 9
本例展示了如何在串联模式(cascade mode)下同步多个定时期(TIM)外设。
在本例程中,使用3个定时器,串联模式下同步它们:
1. 设置TIM2为主定时器 - 使用PWM模式 - TIM2更新事项作为触发输出
2. 设置TIM3为TIM2的从定时器,为TIM4的主定时器 - 使用PWM模式 - 使用ITR1(TIM2)作为这个定时器的触发输入 - 使用门控模式(Gated mode),从定时器的启动和停止都由主定时器TIM2的触发输出信号(Master trigger output signal)控制。 - TIM3更新事项作为触发输出
3. 设置TIM4为TIM3的从定时器 - 使用PWM模式 - 使用ITR2(TIM3)作为这个定时器的触发输入 - 使用门控模式(Gated mode),从定时器的启动和停止都由主定时器TIM3的触发输出信号(Master trigger output signal)控制。
TIMxCLK固定为72 MHz,TIM2计数器时钟为72 MHz。
主定时器TIM2输出频率为TIM2频率(TIM2 frequency), TIM2 frequency = TIM2 counter clock/ (TIM2 period + 1) = 281.250 KHz; 占空比为TIM2_CCR1/(TIM2_ARR + 1) = 25%的信号。
TIM3输出频率为 (TIM2 frequency)/ (TIM3 period + 1) = 70.312 KHz; 占空比为TIM3_CCR1/(TIM3_ARR + 1) = 25%的信号。
TIM4输出频率为 (TIM3 frequency)/ (TIM4 period + 1) = 17.578 Hz; 占空比为TIM4_CCR1/(TIM4_ARR + 1) = 25%的信号。
TIM Example 10
本例展示了如何在串联模式(cascade mode)下同步多个定时期(TIM)外设。同步由一个外部信号触发。
在本例程中,使用3个定时器:
1. 设置TIM2为主定时器 - 使用翻转模式(Toggle Mode) - TIM2更新事项作为触发输出
2. 设置TIM2为连接在TIM2 TI2上的外部触发信号的从定时器(从管脚TIM2 CH2上输入) - 使用TIM2 TI2FP2为输入触发 - 门控模式(Gated mode),从定时器的启动和停止都由外部触发信号的上升沿控制。
3. 设置TIM3为TIM2的从定时器,为TIM4的主定时器 - 使用翻转模式(Toggle Mode) - 使用ITR1(TIM2)作为这个定时器的触发输入 - 使用门控模式(Gated mode),从定时器的启动和停止都由主定时器TIM2的触发输出信号(Master trigger output signal)控制。 - TIM3更新事项作为触发输出
4. 设置TIM4为TIM3的从定时器 - 使用翻转模式(Toggle Mode) - 使用ITR2(TIM3)作为这个定时器的触发输入 - 使用门控模式(Gated mode),从定时器的启动和停止都由主定时器TIM3的触发输出信号(Master trigger output signal)控制。
TIMxCLK固定为72 MHz,预分频设置为2,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 24 MHz。 三个定时器都工作在频率 TIMx frequency = TIMx clock counter/ 2*(TIMx_Period + 1) = 162.1 KHz下
TIM2计数器的启动和停止由外部触发信号控制;TIM3计数器的启动和停止由TIM2控;TIM4计数器的启动和停止由TIM3控制。
要改动例子的只有example 3和5: 相关链接:https://bbs.21ic.com/upfiles/img/20076/2007612203125519.zip |