|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程 7 A; l& B) o# I' c% @5 V
6 @% \( h; T* K! X: q
; r, M- }6 ~( [* ^& K7 Z/ E5 {2 c; P8 m1 D* a
& l1 c8 P; z9 T 图1 t) @# ^4 _) |5 }6 V( Q
. C; r* j4 ?$ p0 N. C9 ]
0 M; b. [$ p* V9 ^( X, K 8LED硬件电路+ _+ U5 G4 G5 a- A# \
6 l W6 k/ k. Z2 ~4 O! N 板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:$ v6 N9 c6 M; _. o. a: r
5 c5 u) g. W/ d5 ]
5 [6 Z, O( j5 }0 L 图2% b$ D; }: K9 o/ l) V4 \+ t3 u) V
/ s% g3 d) c1 l' d6 L: B4 t, j
第二节 Timer寄存器
0 A5 X7 }, P& k; J) v
: g9 [) W2 v& w 2.1 Timer介绍; Y5 |2 g9 J6 p+ O( E% ~
% V8 d- {$ e& m ^6 h
软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。
: L& x% f9 W4 S- }/ t, F 2.1.1 Timer02 y$ n4 g# }9 ~! o0 X* D
; U( Q& b& A# R/ x7 G1 V3 G5 k9 \
定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。, O& N* n$ G+ q0 ]( r
2.1.2 Timer2
4 ?1 V* I* Z. C$ a" c' |% a) y5 k3 d& O- i9 [% ]$ G$ w3 Y. e
定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。
" h! J- ^$ }+ P! v1 ^' c X6 M
) J4 Y2 w5 m: v! S 2.2 寄存器介绍( p8 K4 s- ^" i6 m5 i
2.2.1 定时器0控制寄存器( c; F3 ^+ d7 O7 T: j% R9 F6 ^9 l
3 O i9 p2 s' Q. i7 J
$ T# b* b/ x( w" J. o# G" q
图3
" V& h0 {' [( `5 c1 Q" ~$ W1 s 15:4位:保留不使用;
' V( V h9 P& Q4 g 3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;5 {3 V' c: V4 ^# [3 {
2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;; _- _4 V e+ o6 M N' E
1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);" H5 F4 G. H3 _$ b6 s
0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。: v- F1 A% d) k2 {5 z. Y# b
% _+ V3 o% n& i! w! p, G4 D* k
2.2.2 定时器0计数控制寄存器
8 i. i/ b2 R1 w: Q6 [) L2 n3 Q2 ^" T) Z( U# f4 p
, P4 c/ S$ F) K! W 图4
! g [- v# w1 K; ` 定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
: I- O* e6 N. s 2.2.3 定时器0高电平重新装载值9 N1 n. C- x1 o1 `2 h: @; ?
' t9 N7 X+ u* |- g. v, ^& c; |
. v1 G: c; F/ Z5 g( f
图5
, ?9 |! }3 Q! }3 T" l% c 定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
) |8 R. c3 j8 v! S: H4 z7 R8 j/ u 2.2.4 定时器0低电平重新装载值! @1 v3 V* b' n6 p* W
% Z% ]4 J! X7 ?6 E4 M$ G
! ~, P) a* j6 Z t( A
图6
& `- M7 W9 `2 [3 g 定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
% W% q- {7 ^2 Z 2.2.5 PWM2占空比
6 I' C& J7 `6 l2 H- w- B3 w
5 b( K' i0 m. G+ [5 @6 K
( `# ], K e* q/ l" w, D
图76 I6 e1 ~0 Q% \9 l# I
PWM2信号的占空比。2 ^/ T0 C6 H" g
2.2.6 PWM3占空比
* z: i/ z; Q" _; U# _9 r7 T) n. c2 S5 G5 d
9 C+ j$ H4 y" H, B6 o. c& V
图8" R/ n* y$ c* L2 R3 C5 v2 |
PWM3信号的占空比。8 m! ?, A B9 d, i) k
2.2.7 PWM4占空比& V, s4 Z( o# V6 |% t6 D5 ^* v) [
9 Y+ ]3 x8 x+ w# y9 L* Z
* _9 ^5 n; Q( _2 o' ^
图90 ^% ^; C4 n+ u' Q$ B
PWM4信号的占空比。
" I4 a- k1 W. T u" e6 E 2.2.8 PWM2,3,4的频率7 P/ r8 m3 A& q& |6 s0 W7 ]3 _
/ m" w& e) ^0 }; W4 n
6 N2 C4 `" k4 Z/ i, w: M
图10
" w j( s0 ]% w- ]& Y, U PWM2、3、4信号的频率,三个信号频率相同。+ V9 e6 u+ Y* |6 W% A
y+ ]- S; J6 [: F 2.2.9 PWM2,3,4控制寄存器
; \1 w" X/ B. Z2 m" s5 d* d0 q" ~0 w W
" q$ W7 I8 B8 _* ` _9 b7 l 图11
" r3 z3 B! L& e- K 2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。
7 ^# d, D6 `1 l4 w. T 1位:软件暂停使能,为’1’则PWM2、3、4暂停。
D, N, I* v# V$ R7 R 0位:PWM信号使能,为’1’则PWM2、3、4使能。
) y/ G) i* m2 g$ O; t. } `
4 P- z, U6 m" k; ? 2.3 寄存器配置讲解3 t$ [, {9 J) q( P6 i5 V4 o u6 u
#define CLK_PER_REG (* ( volatile uint16*)0x50000004)" ]: Y! k- C, @& h
#define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)
/ B& d4 ?9 n& _3 A) l& i #define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)
& v J8 i/ P9 i6 M8 Q# i #define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
/ ?+ x/ `# _! ~3 R+ s8 j3 g #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)5 J1 r& l8 ?1 W( o/ {
#define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408)
" _# B5 |- V4 x F4 u #define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A)
2 a0 H2 G* q1 e# m: Q U/ P #define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)
7 ~/ N3 c5 @ O$ H; b #define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)
P2 \; m! d( f5 [, ~4 c #define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410) k/ G1 Q4 F# ~+ S! F: w
启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;' B+ ~, b/ Q( Q" G3 k0 e7 N
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
2 V F7 C4 f' u3 s5 t3 P 设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;1 j+ ~% c. Y9 P7 O
开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);1 T6 I5 f+ p# _/ k/ D
启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);" ^" A; X; @: h: g9 T0 \/ e6 f) z
5 m$ c, E6 X7 m, p+ W; B6 \+ ]' I
( Q" I1 s* k" J" N8 J' [% r4 L! T
" X/ ]9 c2 ~- D# c; |1 E 第三节 定时器实验8 v8 p$ x8 a$ P. |0 W6 g" w& s
- _; \& L, O/ t0 h" f( V- ?
实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
; ^$ B! n7 P) w" `- X9 l$ l 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
2 W. [6 V! z' d: c# M (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:
% W8 a O% p$ W( U2 N0 i
# F) d: T" O+ A4 M
. L% Q4 H4 o9 y$ O$ X$ s8 \
图128 J2 U0 x! M4 d* x. F$ W' U% _
(2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
2 Q0 \7 r- O3 {1 e, @
& A, w% z3 v9 x8 f) z
6 _1 G" k" c/ ` 图136 _# l3 h! j$ X# U9 |( g! x& Y
将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
! B0 i! B; \4 j1 Q4 G7 ] 打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
% m' L4 Q8 o6 y* |! R ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:
; B& H5 k, v" [( g; E
6 N3 E2 a" ?, V! Z
# ?! d9 c/ S# Z
图14/ H3 C% U* X2 O; L. O
使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
5 f' G' G9 L! a! n! c% ^
, I# T) N* h" \
0 b- j2 M7 [: z# }
8 d! _& m0 e N" N: Q1 E
1 \, n% A% R% R! k" C 图15
' X# I) x1 B( i: t0 A6 x c
: A }0 g- Y( z/ ]4 b: E% b- F9 }& n/ u5 n7 @. Q2 u% ?, K) B
# T/ D. q# e3 H, M
文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
: ]4 u7 y1 f, j6 m* I0 A" U9 ?8 L! ?7 \
9 |* S% n/ Z+ T6 J8 A+ W; Z. U |
|