STMCU小助手
发布时间:2022-11-16 15:04
|
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第六部分针对STM32单片机内置TIM模块的PWM波形产生的学习和理解。 硬件模块3 [5 H/ |: Q; P5 K1 |! v STM32F103R4; M5 O$ R1 x) c$ I7 L( i! I4 l 9 Q+ v: g* P. Z2 X$ r- C- F 示波器 软件工具 CubMX Proteus 5 j5 [" B! O( e* Q8 g$ x KEIL/ b1 k6 W( p _# i/ P$ F 电路连接图 3 ?4 V* U, W5 S1 A+ _, b7 ]
工作流程3 j& y; u( F1 B 首先,在CubMX种设置号一些参数,选择TIM1定时器,按下图设置好工作模式。输出PWM的引脚是PB15引脚。2 M# I' e2 w% L" g6 F7 }6 q2 c! I4 ` * a; a3 p# r) Q5 _: V
- G; K0 A" e/ F- i( i; Z5 S 然后再按下图设置好预分频和计数值/ T3 W0 E8 `5 O& Y5 Z3 c$ i8 j 7 j7 a- B2 J, [+ z' m; w* y
最好设置好占空比,占空比=Pulse/Per,比如想要设置占空比为20%,而上面设置了计数值为1000,那么按照这个占空比,就照下图设置好Pulse为200即可。. d Z" x) L3 m
& X& e8 ` O3 [" T' P 然后生成工程。3 u: k$ i) i8 j 增加输出PWM的代码。
出现问题了,上网查了一下好像是超出了单片机内部的资源。网上推荐的方法是直接换一个型号的32单片机,但是我不想用这种方法,后来我删掉一行有浮点运算的Printf函数就可以了,可能是printf用的太多了,太占内存。可以运行了,但是一开始还是没有PWM波形输出,于是我换了个通道,如下图。 : }- |' G/ f# Q
9 [; v6 X; Y) [ Prescaler:分频值,可以设置为0 h" W" y7 g$ Q9 L5 G0 q6 @ Counter Mode:计数模式 9 T2 m% _* O+ z Counter Period:自动装载值5 j& }& s( N$ T9 E8 o / s$ B' D- j6 D3 @2 D( l' E Auto-reload preload:使能自动装载功能" _7 B4 A8 }6 Y2 _8 V* j ! Q U6 O; {8 x2 ^8 i
7 b+ v& q: f1 c# Z" u* `+ e- J4 K/ f Mode:PWM波模式: M: Q; Y5 t" P- i# ]+ _; o0 d& L " P3 o* e5 N, S8 K% c/ v* @ Pulse:计数比较值9 d* D) }+ `0 ~: X5 M$ q9 E 0 ?1 _- p5 o* C$ I CH Polarity:输出极性 输出的结果如下图,这是20%的( \2 Y+ ~' y% Y2 A , p% T: B' f9 S9 Y! c
然后改变占空比为50% ; q4 D$ [: Z) `2 t6 z3 R
输出波形 5 h$ c% A- N- ]0 o; S+ K9 [; N
至此,PWM模块完成。8 J$ G% k+ Q( F% Z5 |$ p! }. ` 程序代码 mian.c
4 E/ V* O4 t+ K7 T( y, O 作者:jxjajl bilibili6 O- @: d# T9 \; F# A- ?' A4 P |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版