|
本帖最后由 toofree 于 2019-3-2 02:31 编辑 【STM8-SO8-DISCO】——7、TIM输出PWM,呼吸灯 / L) ]2 p! a5 l3 v1 q$ s( f$ W2 X9 L$ a' C/ I. N7 I+ F9 C 本实验,在上一贴基础上,增加定时器TIM2产生PWM信号。通过定时器TIM2产生PWM信号,在主循环中不断改变点空比,从而实现呼吸灯效果。" B- L5 z) P ] (上一贴链接:【STM8-SO8-DISCO】——6、TIM4时基测试 https://www.stmcu.org.cn/module/f ... 9541&fromuid=307297 )& ?- p: O& I+ Y * x. J' u; I3 b) H$ R0 u- V 原理图显示LED灯LD1为高电平驱动点亮。
对应STM8S001J3M3为PA3/PB5管脚
使用STM8CubeMX,可看到PA3/PB5管脚,同时为定时器2的第三通道TIM2_CH3。; W, x" t W7 p" F, r! H
数据手册中TIM2的大致参考如下,详细功能操作请参考芯片用户参考手册。( }% W3 N) ~0 d! k, y' p
% r0 b9 e1 m8 @. v" C7 w% b5 q 添加的TIM2部分代码,参考样例工和“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\TIM2\TIM2_PWM_DutyCycleConfiguration”。 添加CCR3_Val变量定义。
增加TIM2初始化配置函数调用。改变CCR3_Val的值,CCR3_Val从0逐渐增大到999,然后在从999逐渐减小到0,如此往复;更新寄存器TIM2->CCR3H、TIM2->CCR3L;循环延时1mS。
& C' u# _- s I1 V- @$ j TIM2初始化配置函数TIM2_Config(),注释掉CH1、CH2通道相关代码,只保留CH3部分。 TIM2定时时钟16分频,即1MHz;PWM周期为1000个时钟,即1mS。 设定CH3通道为PWM1 Mode方式,PWM脉冲正极性;开启CH3通道CCR3预加载;开启TIM2的ARR寄存器预加载功能;开启TIM2。! R0 D. G `$ S" d6 }# Y1 }
4 A( O+ w4 [' Q3 q# ^" x$ n4 b 编译,下载程序,并全速运行。 实验现象为:程序运行5S后,板上用户LED灯LD1,由暗逐渐变亮,然后再逐渐变暗,实现呼吸灯效果。; \5 f+ D! s# b; O- z6 d
用逻辑分析仪抓取到的数据,可以看出PWM周期为1ms。(标尺取了10个周期,共10ms)。
7 h$ L- X$ @% p! G: b0 P 由亮变暗,再变亮,过程中,有一个周期为全灭的状态,即转折点。之后,每一个周期,高电平时间将逐渐增加。1 M) [: a9 E1 A# B) s3 G
将上图中,编号1号波形展宽,可看到高电平时间为1us;( j, S) i6 V% J8 j) s
编号1号波形为2us- W6 i! E) g) e! n$ j
编号3号波形为3us。9 c- N: W& o2 O$ b/ V
1 m c1 U+ }$ R4 h0 Q. z5 ? 程序比较简陋,请凑合看。 ' r, u; N+ i% N* p4 a 本贴测试工程附上:1 O7 m* w. Z2 O) u3 E* R" {/ O. `
STM8S_StdPeriph_PWM_OUT.rar
(259.39 KB, 下载次数: 81)
|
| 参与人数 1 | ST金币 +1 | 收起 理由 |
|---|---|---|
|
|
+ 1 |
| 学习观摩 |
| 感谢分享 |
| 感谢分享!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
STM8自学笔记(推荐STM8很好的入门电子书)
无刷直流电机控制应用+基于STM8S系列单片机---电子书
【精华资料】STM8Sxx固件库FOR IAR
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
微信公众号
手机版