下面三个模块,一个比一个高级,当然使用是越来越简单
STM32F4xx系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器(推荐学习)
1,第一个模块:Timer
浅层理解:计数,不停的触发
Starts timer counter and provides current counter value
Timer Starts Timer Counter and Provides Current Counter Value: 这个模块启动定时器计数器并提供所选定时器模块的当前计数器值。当在配置参数中选择了模型初始化期间启动定时器参数时,只有在模型初始化期间才会启动计数器3
2,第二个模块:Timer Capture
浅层理解:和寄存器的值比较,并触发信号
Output the capture compare register value
Timer Capture Output the Capture Compare Register Value: 这个模块在配置为输入模式时,输出所选定时器模块和通道的捕获比较寄存器值。在捕获数据长度中指定要从捕获比较寄存器中读取的数据长度。对于大于1的数据长度,必须在STM32CubeMX项目中为所选的定时器模块和通道添加DMA。
3,第三个模块:PWM Output
浅层理解:发送pwm到通道硬件上
Generate square waveform on enabled channels using timer module
PWM Output Generate Square Waveform on Enabled Channels Using Timer Module12: 这个模块使用定时器模块在启用的通道上生成方波。模块输入控制每个通道的方波的占空比。如果将占空比单位参数设置为百分比,输入值为0将产生0%的占空比,输入值为100将在相应的通道上产生100%的占空比1。
4,第二个和三个模式的区别是什么?
STM32通用定时器之输出比较模式与PWM模式
stm32输出比较模式与PWM模式总结
输出比较模式和PWM模式都可以用来输出PWM波,在功能上两者有相同之处,对于一个定时器这两种方式都可以做到四路输出PWM,每一路PWM占空比都可调,也有不同之处,输出比较模式可以方便的调节每一路PWM波的频率,可以输出四路频率不同,占空比不同的PWM。但是PWM模式如果想要调节PWM波的频率,那么就只能重新设置预分频系数或者自动重装载寄存器ARR,并且输出的四路PWM频率必定一致 ,PWM模式是输出比较模式的子集。
如图是设置比较模式PWM 输出模式的方法
明显PWM模式是中间对齐模式,比较模式就是普通PWM
5,频率和占空比计算
使用Stm32CubeMx 完成PWM输入模式采集频率和占空比
频率和占空比计算的公式:
频率:TIM4在APB1时钟总线上,频率是72M,我们一开始设置的分频比是71(+1),所以我们的定时器计数频率是1M,即计数一次的时间是1/1M。那么我们通过读取的周期计数值计算出周期=TempPIpre*(1/1M),然后频率是周期的倒数,故我们需要的PI频率=1/(TempPIpre*(1/1M))=1M/TempPIpre。
占空比:TempPIpul是高电平计数值,TempPIpre是整个周期的计数值,所以TempPIpul/TempPIpre就是我们的正占空比,这里我TempPIpul*100是将小数显示扩大100倍成百分比显示。
6,下面是一些配置项的说明
总体的参考链接是:
https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ref/timer.html
输入:
1,配置项:Enable frequency input
缩写:freq conunt
说明:“freq count — Frequency count of timer scalar” 的使用方法是,你可以设置一个常量值(constant),当计数器的计数值达到这个常量值时,就会触发一个事件,具体来说,你可以这样操作:首先,创建一个定时器实例,然后,使用 set_timer 函数来设置定时器的频率3。这个函数的参数就是你提到的常量值,也就是你希望在计数器达到多少时触发事件,最后,当计数器的计数值达到你设置的常量值时,就会触发一个事件。这个事件可以是任何你需要的操作,比如更新一个变量的值,或者执行一个函数。
2,配置项:Enable input to enable/disable timer
缩写:CEN(“CEN” 是 “Counter Enable”)
说明:“CEN — Port to enable timer counter scalar” 就像一个开关,用于控制计时器计数器的启用或禁用。当你设置 CEN 端口的值为 1 时,计时器计数器就会启动。相反,如果你设置 CEN 端口的值为 0,计时器计数器就会停止。这个功能在你需要精确控制计时器的运行时非常有用。
0 - 禁用计数器1
1 - 启用计数器1
3,配置项:Enable main ooutput enable(MOE) input
缩写:MOE
说明:“主输出”(Main Output)是指计时器的输出信号。在计时器中,“主输出使能”(Main Output Enable,简称 MOE)是一个功能,它控制计时器的主输出是否启用,当我们谈论计时器的 “主输出” 时,我们通常是指计时器产生的输出信号,而不是计数值(CNT)。这个输出信号可以用来驱动其他电子设备,或者作为其他电子设备的输入信号,在一些应用中,计时器的主输出信号可以用来驱动电机,或者控制LED的亮度。在这些情况下,计时器的主输出信号通常会通过PWM(脉宽调制)来控制电机的转速或LED的亮度。计时器的 “主输出” 和 “计数值” 是两个不同的概念。“计数值” 是计时器内部的一个状态,表示计时器已经计数的次数。而 “主输出” 是计时器产生的一个信号,可以用来驱动或控制其他电子设备。希望这个解释对你有所帮助!
stm32硬件输入中断,触发事件
7,下面是一些配置项的说明
总体的参考链接是:
https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ref/timer.html
输入:
1,配置项:Enable frequency input
缩写:freq conunt
说明:“freq count — Frequency count of timer scalar” 的使用方法是,你可以设置一个常量值(constant),当计数器的计数值达到这个常量值时,就会触发一个事件,具体来说,你可以这样操作:首先,创建一个定时器实例,然后,使用 set_timer 函数来设置定时器的频率3。这个函数的参数就是你提到的常量值,也就是你希望在计数器达到多少时触发事件,最后,当计数器的计数值达到你设置的常量值时,就会触发一个事件。这个事件可以是任何你需要的操作,比如更新一个变量的值,或者执行一个函数。
2,配置项:Enable input to enable/disable timer
缩写:CEN(“CEN” 是 “Counter Enable”)
说明:“CEN — Port to enable timer counter scalar” 就像一个开关,用于控制计时器计数器的启用或禁用。当你设置 CEN 端口的值为 1 时,计时器计数器就会启动。相反,如果你设置 CEN 端口的值为 0,计时器计数器就会停止。这个功能在你需要精确控制计时器的运行时非常有用。
0 - 禁用计数器1
1 - 启用计数器1
3,配置项:Enable main ooutput enable(MOE) input
缩写:MOE
说明:“主输出”(Main Output)是指计时器的输出信号。在计时器中,“主输出使能”(Main Output Enable,简称 MOE)是一个功能,它控制计时器的主输出是否启用,当我们谈论计时器的 “主输出” 时,我们通常是指计时器产生的输出信号,而不是计数值(CNT)。这个输出信号可以用来驱动其他电子设备,或者作为其他电子设备的输入信号,在一些应用中,计时器的主输出信号可以用来驱动电机,或者控制LED的亮度。在这些情况下,计时器的主输出信号通常会通过PWM(脉宽调制)来控制电机的转速或LED的亮度。计时器的 “主输出” 和 “计数值” 是两个不同的概念。“计数值” 是计时器内部的一个状态,表示计时器已经计数的次数。而 “主输出” 是计时器产生的一个信号,可以用来驱动或控制其他电子设备。希望这个解释对你有所帮助!
stm32硬件输入中断,触发事件