|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程 7 s# k) g* b3 k2 ^# m% o7 W& D
" W9 `; S( E1 D. M1 h" p0 N6 V
, D% c" _$ A- w* s/ w" t
, H5 e: W9 J {$ a/ Q& I; \
0 U8 h" [* x8 P6 g, G3 n
图13 B- p+ ]2 P2 d) u+ O0 }' J, i1 B
: m5 v) o4 R4 p6 F, ]: ^ `/ r4 x
& ?+ X+ d \2 x1 N! ?0 e5 G
8LED硬件电路
8 o) g0 u: N% p! m8 O
/ q+ t. H+ |% m 板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
' U9 {6 C. y( f+ Q% s! m( Y1 V; Z# f- B
* l8 L5 I* |' p8 p) d1 T5 m
图2: T- C/ c* L/ ]# }5 m/ y3 {" e
' x m, e! G9 N5 y4 t
第二节 Timer寄存器
% s' ]9 [: Q. T& C9 \4 z" w8 c u7 }1 C! }! w
2.1 Timer介绍
: G7 ?# T( K/ w ]) J
0 c: c' q6 }8 B5 h+ }) v 软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。0 i1 l% M3 [' Y- j' ]! _9 T
2.1.1 Timer0 m7 ^9 y# c4 `
/ V% r" t4 D1 G9 i
定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。2 z) |" ]3 s- G5 B
2.1.2 Timer2
) P& y" R- n1 A, h0 d% V
# W9 ]# }$ x5 h# R7 } 定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。
4 H7 O3 p9 m, I1 r$ _$ ?5 G9 l4 S' L9 n
2.2 寄存器介绍
. ?1 K+ I8 E( M( n 2.2.1 定时器0控制寄存器
9 m2 t, `) w7 J w. n/ m+ [3 e) a m
% Y4 {! l( v. v3 }. X$ Z4 E- M: E 图38 J5 Y5 I1 e5 ?% ~! ~% M8 `* ?
15:4位:保留不使用;/ X# w% E. p& M- }+ ^, |; n; L# q3 S! r
3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;5 _! {7 w$ u; A: m& k
2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;& m7 S3 [8 z5 E1 a/ I
1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);- i5 B5 v3 `/ Z1 ~
0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。, J5 o; _& |! h9 g# S8 J, L: l
$ I# b/ F5 Q) G6 j
2.2.2 定时器0计数控制寄存器
3 M) J8 E+ q; J! @9 l5 q9 k0 R' O. H' m1 s# i, `
2 ?1 m: o H* Y/ d0 H B( P4 o5 d6 ^ 图4
4 l. _) B; w) i9 t! b 定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
. B% I9 {4 b8 D7 s 2.2.3 定时器0高电平重新装载值6 d( U8 X+ a& m8 z: K# R
/ ~) g: w- t I8 L% H6 d# T, ~
0 a5 ^/ ~6 Q, l/ F4 P
图5
3 `1 J3 q& ]+ w B 定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。! P: B! @! Z% V8 G6 o, S, N2 J
2.2.4 定时器0低电平重新装载值
' y5 t# t+ Y) V* o( l" f' w3 [- Z% y, d6 j* S; `7 H' s
3 z) m* M: d2 [- ?" c, e 图60 d1 f7 r( X/ b3 G. \
定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。8 T3 @" \4 O& c- g+ ?
2.2.5 PWM2占空比4 {; b9 P& Y$ a! @. q
8 S& y+ e" X6 t7 u* u' e3 _
. M6 G$ Z; Y+ a 图7' i6 G% {( o. u7 \ T+ O
PWM2信号的占空比。
! b0 }! l: C1 [3 l, A 2.2.6 PWM3占空比0 B! E+ _) j" s2 R6 y p! n
% t+ D+ I7 M5 ^1 A: C; R7 a; j
$ t# x5 j D P/ h; P o8 ]
图8
2 N8 w6 J6 E( r! n: H$ A" ? PWM3信号的占空比。7 f! G4 z$ Z9 M) N/ y1 g# e2 y
2.2.7 PWM4占空比. T8 D) Q9 J9 A. e* K# X
2 N* Z6 T+ Q% L9 Y1 L `
+ L& k& F/ @7 K$ J2 Z1 G
图9: E4 {( c8 \1 V( F* l
PWM4信号的占空比。
0 Q( i, O$ x5 \8 a3 | 2.2.8 PWM2,3,4的频率
; y% m$ B" m' Q$ z& ]9 K" i n% J
; v" b/ M: u `) Z
图10
6 w0 R6 ^; J5 }$ W PWM2、3、4信号的频率,三个信号频率相同。! G2 {4 L9 _7 s2 t7 m
e' x3 I, v' u! R+ @* {; k% Z 2.2.9 PWM2,3,4控制寄存器
; q: @5 _4 J' z [
. A" U) [, A% x0 O' k/ L
) d( s- e/ K3 e! \ 图11# ]* x. ~1 v% K* \6 N
2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。- M; Z1 M- B: |3 C6 r/ `1 w( ^
1位:软件暂停使能,为’1’则PWM2、3、4暂停。2 S- j# F2 U- Z( k9 E, Q
0位:PWM信号使能,为’1’则PWM2、3、4使能。' r6 u) [5 }6 p& m9 g1 i5 m, V
+ _8 o& z+ p/ Q/ Y4 j5 P" W5 F 2.3 寄存器配置讲解7 S; c& V0 ?: v# ]/ n. k
#define CLK_PER_REG (* ( volatile uint16*)0x50000004)
$ E* E: j. }! s7 c7 ], t #define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)
: c7 u, T9 u1 {- |1 T4 Q #define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)$ ^3 G- L$ ^( z' }
#define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
8 |4 O% F: m7 i #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)
8 F6 g' y/ m' _1 M5 n #define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408)7 ^' w5 M9 ~ {/ E G, S) m# y
#define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A): L& ]! @/ e2 k* A/ {5 M
#define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)' w {" X) ]1 o; W* Y
#define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)& f1 ]1 [+ X" A' r
#define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410) V( D+ w5 U9 a! V+ S1 b7 o
启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;* [3 l2 B! b5 L2 q7 y5 J4 `
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
& Z l0 P( u/ o$ R+ a 设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;3 E8 V8 s* `9 G4 b4 B# g
开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);6 I5 |( k! t- P- z, D
启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);
/ Y1 t* r: o% T8 V8 K8 J/ p" x# |" _6 h! W; O
& Q# @; v( [& i; g
/ O) U9 ^" j1 ?, B3 P, a 第三节 定时器实验
3 Z& X" U3 w( H
" q0 n0 z" ^5 w! e" k! ] 实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
s6 }4 t6 I. D% F. I$ r 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:& @; `! t2 [ N! l' G
(1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:1 j$ ]+ |- R- l7 [% A# I
5 ]5 _, e7 T' K2 e: s) b1 |
+ D+ T2 v3 V7 s& A 图12
; i( ?* q' c# A (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:& J" f, ~* d+ d& `+ F: h9 J; l0 G
8 x- h m7 L8 p0 N7 A9 { p, C% x8 O
: I+ R/ s) I. S0 n7 S. O" s& o- s
图13: J1 I* V4 Z' M
将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
& @0 n- q3 m* V( \5 k2 b 打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
$ O! h) b7 X$ A6 N7 m9 _9 a) i ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:: P0 D9 {" T* [+ m f. v
: r0 O N& K4 N0 V" n
! r( \/ E9 G# w 图14; f0 s" g- H2 Q3 S6 F8 e
使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
& E$ \& w" h7 ^$ }5 J8 p
2 \; N; k8 b# K7 u
4 z9 r; U) w+ E. G7 O
- E* P2 F5 X1 K, H H A
- I, y9 X B1 s' p! \ 图15
. a' w( S) Y g W9 A/ Y
: J0 h" m5 |9 O4 |$ z3 C$ m+ f( y l3 f& v
, V4 r0 V4 P/ k% f) @* K! U- j1 {. l' ?) r/ I7 O) p+ `
文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
% `3 R) {# R& E G4 W' q
" u+ n- Z0 c8 t5 \
1 o* e8 ~# h* ^: v" w6 p
|
|