STMCU小助手
发布时间:2022-9-4 19:51
|
生成例程 使用STM32CUBEMX生成例程,这里使用NUCLEO-F103RB开发板
* R( s' y0 N3 a6 B- y 查看原理图,PA8设置为PWM输出管脚。! l G+ W8 K6 b, Z1 p ) o0 f# c7 z5 y- ~
生成独立的文件。 . N- F$ H; s) n2 d4 p9 C4 a X
9 ], w, j, ^5 P3 y 工作过程 查看下面工作原理图可以得知,时钟可以由内部Internal clock产生或者外部ETR。& v4 f3 T3 M j ?7 J$ ~ 同时可以设置复位,使能,向上/向下,计数。( i h" P) i# w
查看下列文档可以得知,定时器主要有TIMx_CNT、TIMx_PSC、TIMx_ARR、TIMx_RCR控制。- Q& G: K! J) ^9 m( Q1 r2 U" W* { 同时预分频器(TIMx_PSC)范围位1-65535。: S/ f9 n( Z4 T$ f) _ ' ]8 V; ^9 u% H+ U# Q/ M* M( Q
( K2 _6 w2 W4 W 查看TIMx_PSC说明,可以得知定时器频率为 fCK_PSC / (PSC[15:0] + 1)
. H. i& Y' o" n4 c G4 W 可以看到,当psc设置为不同的值的时候,计数频率也会发生改变。! t8 x2 Y6 Q+ [! u0 h8 `
同时ARR可以改变计数值,当写入的arr越大,他的频率越低,计数周期是ARR+1。 . g/ w1 p8 h6 f0 I
6 i, Y2 x* @8 r" A/ L: N PWM频率计算如下所示。$ j7 m+ ?, [3 T
在上面配置TIM1参数,预分频系数设置为64-1, 自动重载值设置为1000-1,那么PWM频率为64,000,000/((64-1+1)*(1000-1+1))=1000Hz,即1KHz。; T( e) I y+ q* ] - w3 r* f, {. R! `
3 h: k% R8 g! c7 S$ M 只要TIM1_CNT<TIM1_CCRx,PWM参考信号OCxREF总是为高的。若TIM1_CNT>= TIM1_CCRx,OCxRER为低。若TIM1_CCRx中的比较值大于自动重载值(在TIM1_ARR中)则OCxREF仍保持1。若比较值是0则OCxREF保持0。下图的例子显示了当TIM1_ARR=8时一些边沿对齐的PWM波形。
__HAL_TIM_SET_COMPARE() 设置ccr,可以通过此函数修改pwm。 $ J; o4 h1 [8 K5 S" P7 q( [
7 s& e4 a5 j# M' Q* N( k. K& t4 c) o2 \ 由于上述设置计数值位1000,那么设置30%的正占空比的ccr应该配置为30%*1000=300,代码如下所示。 2 C6 s- P' ~5 H/ T( p) {
# @/ M" j6 n- h/ [5 F " E* u% o. Y5 ] 修改PWM频率0 z- y* X7 q! C; K9 J 修改PWM频率可以修改PSC或者ARR来进行改变。' V' @% m+ ^2 j9 M9 f* c) z " n5 X$ W8 N- u' U & {% h) F) L8 S1 u$ l. L& ]5 { __HAL_TIM_SET_AUTORELOAD ()" t+ p/ a8 L6 {0 M, _/ C D4 K# N 设置TIM自动重新加载寄存器值。 ) K' ~3 Y* H( y) D& D x
! S7 s1 G' D3 J6 N& y& |# | 初始设置为PSC为64-1,ARR为1000-1,若设置为500-1,那么他的频率应该是64M/(64-1+1)(500-1+1)=2k) b3 B5 J; R; [ 占空比为300/500*100%=60%
5 d. n- S7 m$ p( K- E , n S8 L) k$ y" J* K9 V# _9 ~/ z __HAL_TIM_SET_PRESCALER() 在运行时设置TIM Prescaler。" o1 s8 c, I+ L# Q
1 S+ H) }& X* Y9 o& A8 h) K 初始设置为ARR为500-1,PSC为64-1,若设置为32-1,那么他的频率应该是64M/(32-1+1)(500-1+1)=4k+ F/ k3 z5 N: ~. Y5 ]1 U 占空比为300/500*100%=60%+ H6 @* o1 |7 ~8 I- `) ?5 I' `, | 3 s# I8 M6 U g- m( q" d! \% H: y, z
- u, N. k" ^+ J6 F ————————————————. a& h' M7 B* U4 y 版权声明:记帖 $ b+ I7 o4 o5 n+ }+ _: V! b 3 A9 `4 \( D+ h7 ?1 ]0 [3 C |
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
《MCUBoot课程》学习笔记+从信任链原理到量产实践
STM32CubeIDE 2.2.0新版本发布
CubeMX生成CubeIDE工程代码乱码
STM32CubeIDE实时时钟(RTC)经验分享
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
【STM32U3 评测】人体行为识别
微信公众号
手机版