|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程 ( } |. B& `& T3 Y( T
; W2 l$ d/ l% L. G- F- t$ B
1 D" S) k+ v, o
/ J5 K6 A9 [ n/ ~
6 k6 d6 k/ `* @4 l C7 @% v$ G: u
图1 u& Z7 { w1 ^) {, u3 e
3 F% }5 {. `# B2 S
$ J# O& e8 |3 A 8LED硬件电路
+ A$ I" E$ b' U+ E& t+ [/ ?# U
; T# y* U2 P u 板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
: ]9 U6 l) b2 r. w
/ ~! F3 y7 L. U g
E" B. `! c$ d( n+ o. R" n0 l 图2
0 d( ?+ W# U2 k. x( G I9 b
2 k, b1 S% s* @/ P0 H6 V 第二节 Timer寄存器
1 ^+ q8 T4 I) v% d* N% G. @& y* @8 f6 T! i
2.1 Timer介绍
8 r7 I- L. J* `) p9 L( L2 V+ P8 P" r' _0 e/ O0 ?! ^0 ?5 `
软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。& |5 t2 s8 t9 m5 n# h
2.1.1 Timer0
4 I9 `- t! m5 @8 U& o8 j$ _( S8 O/ b' Y$ f" [: f0 L! A
定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。! o E6 ]' G. a9 O$ H; L% Z
2.1.2 Timer2
% ^8 r( A2 j _4 {, [2 q
M9 j" y! }3 g' y 定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。. [+ n& R P- |( I1 T* |
& B6 f% W! d/ G/ I: H
2.2 寄存器介绍
" c2 u, m8 M7 ?3 Y9 S 2.2.1 定时器0控制寄存器
/ f+ v7 e! m% j4 ^% l/ I0 s
/ v7 Q( _% W& W4 _
- m; |# x0 Y5 C' g6 m2 c J1 Q: V, P
图3
6 C; v: e( I [% L% x6 y* a" i. K: ^ 15:4位:保留不使用;0 V: L& z5 C" e7 w% y2 `! ]* s
3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;
* k0 s: |" D0 u 2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
$ X# D" M2 D" [; L0 J 1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);1 D2 @9 S; w) _; X6 j9 Y" H; G
0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。7 u' T: P7 J4 @$ @5 @% K: W
- Q2 `4 Q8 t2 Z8 z2 U: H; J
2.2.2 定时器0计数控制寄存器
+ E0 S' O2 N+ T/ C& H0 q! p& { g8 e% ~7 X+ i
B5 V% p: A/ K: M7 E. O4 a" Z 图4
2 V- x. H; _; `: y, { 定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
. t ?. k3 {" v8 Q& | L/ r 2.2.3 定时器0高电平重新装载值, t3 C* p. y8 k
5 d) w _8 N" v6 u) {& S
) W4 ?/ A' t) z6 g, `
图5
- U: A2 U( {0 \% N 定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。8 T f; E4 L( [6 p6 t
2.2.4 定时器0低电平重新装载值
- Z( P/ {( H8 p2 O. _ }7 S4 e, m. X1 W( E% N6 a. Y- N
3 `% U: a8 q- N0 p4 p( j9 x e8 a
图6' R3 Q1 r$ v9 x+ K; Y3 K k9 Q0 P
定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
; d4 c" s6 q5 w' U0 g0 P 2.2.5 PWM2占空比
4 l+ U1 u ~" x! i% ~% `$ M5 @2 A3 _% S: J. ~- B" z7 M, f, K
2 H0 r) P( x) X0 X: R. P( J* _ 图7! [+ a4 m/ w' \2 x
PWM2信号的占空比。
* V. ?# }/ y q. G) g& g. X 2.2.6 PWM3占空比& n. _7 }! @4 }. l# Y# F; J, P
3 _; c" ^' i6 _5 [5 w
O9 @( b0 b) W3 B% e" L* t6 G' T
图8
$ ]/ c( j: _& S: R b PWM3信号的占空比。, K. x- b/ e: s! p
2.2.7 PWM4占空比/ t- m0 u- y1 a
6 Q, u: a4 j; c/ x
* Z2 W) g% G* K! |2 F
图92 W3 L# v9 }7 ^) G& L0 d
PWM4信号的占空比。
' N/ ~9 Y/ y2 ?0 I; e* F+ ? 2.2.8 PWM2,3,4的频率) r& }+ ^& s) k" P; C& Y
8 m6 ^# x! z0 u- n" z8 G3 G! [+ N
3 s' F9 B) L2 a. x0 m$ V" r3 D
图10" D; `2 `. c& e7 m. |
PWM2、3、4信号的频率,三个信号频率相同。. t# i$ n7 A) @# z4 b! x( V
. b! _, {0 e' v5 |& [, ~& D) h 2.2.9 PWM2,3,4控制寄存器# m3 }7 Y1 c' ]
1 `3 s2 Z! q Y9 Q
! ~8 j1 Y" h8 q- w 图11
2 v& ^% ?! d& z2 T1 i 2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。
! O# M" x3 y- U5 H6 u 1位:软件暂停使能,为’1’则PWM2、3、4暂停。
( g; N' B! y* S" {) K7 f) P* R5 b 0位:PWM信号使能,为’1’则PWM2、3、4使能。6 {4 D. S x- \$ j. u- F. Q/ L+ X
3 \+ [) N' v+ g, w- g
2.3 寄存器配置讲解$ x% E/ C/ x# [1 d! v# D
#define CLK_PER_REG (* ( volatile uint16*)0x50000004)
& k; W W6 R3 o; T #define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)
: R5 G, b$ x% U% G. m9 Z #define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)
$ O! e+ Q: ~+ B& ?$ P0 R #define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
' _/ R" K0 \$ ? #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)% j" h) Q, G% b, A' |
#define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408): C/ p, T. L& i" M2 w4 v* v* G
#define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A)4 o, u: A+ G% L; J ]
#define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)0 Y+ |" T$ N, J* P0 [* k- c
#define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)
" D6 L: g# O1 B- i+ u( n #define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410)
! P! n( y! C' c" I 启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;2 V& |; V( ~! k. J
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;6 |2 i1 n- N' G) y0 U
设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200; N) I4 H' e( e
开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);) M" j0 X6 i p2 ^ a
启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);' V" b( U+ f& F, o5 q
3 ]: a2 h6 o- H, }$ U
: P" Z" A" \' P0 V7 F. c- }
7 {6 E' J6 n2 \( h* ^ 第三节 定时器实验
: v$ i' z V, B3 u0 h1 B; t4 q9 d
实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
: n! `. P3 u* X0 V0 ^, w 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
# E# J3 U) o0 J# O/ ~4 ]; t5 b, f- E (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:
) U/ D# ]- v2 h+ O& ]* z! e7 |4 U5 T6 e& R+ v
9 n' B) }8 W9 h) C1 w% R! u7 i# { 图12
' R$ y+ k' h/ c/ J+ ] (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:3 L' w; \$ d$ k! p) V0 ?# V- k* i
- Z* _' C7 L+ ?. |( Y! ]# i. k
1 P- Y( `' p3 M w" _ 图13
$ j9 E- s: I6 Q& Z. | 将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。$ | N1 t X% Q, F# o; j1 h+ q8 m3 a
打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
9 d* F ]9 A$ L" J$ s q ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:
9 v1 q7 J4 J# j2 ?
1 {7 m/ l% P5 \6 s
. L$ M2 T6 i! ]9 ] 图14
, X0 X6 e: v* l2 }3 { 使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:! V- L; h# F T$ Q5 d H, B8 Z& U# C
6 [# ]- i5 P4 C% ~5 N- i4 f6 G
- d7 |+ b$ z/ _3 u: \
8 V% m3 i" [" q9 D" I9 V& g
8 p9 @) r0 K; J% D 图15
2 O- G; `5 Q* ?' X5 R' L, p& k0 g. p2 ]
+ h7 N1 V# M" ^! B+ @
2 Z) Z3 @! Y7 C! D- Z1 U* D: R2 R- a; h' E3 J
文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
- g6 |8 j: Y; z2 R2 ?/ Q' L L: J; g$ a% A' P J" ~# R. l
; y) P6 b% \- R" e% z |
|