|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程
# R4 E2 m; }2 w8 Q) L' ]0 a, Y& h5 p7 R' m( q- t# i" p6 X
0 ~6 A9 u( a8 Z* O
- F3 Y# \9 x3 C$ `
: M/ Z+ S% S8 G7 r
图1
! M" h% U) F) o1 W. l5 S8 N( K3 U2 g% g& o
6 H: q8 ?# U L, L 8LED硬件电路- V# O7 z& t; z; O- x
C6 V ]4 D& E, \- |1 J. o6 B$ D
板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
3 q- t, K& m" S' _: j1 c% M4 u- t( ]$ R
: c f" Z& B8 s3 { 图29 i5 F6 X9 |4 Q/ N# X. q
9 V5 Z( i/ t% O' X$ `& }; w
第二节 Timer寄存器
4 w. k$ C& L, b- }8 p
/ y/ b, h& N9 \/ v8 v6 x 2.1 Timer介绍% {4 Y5 [& G% D* c: }2 U
: h8 O+ ~- U. _( ^
软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。; L: s* \ r0 A& |# b4 D; F
2.1.1 Timer04 q' o; p/ E9 E7 l1 E0 r/ U
: y# a# ^8 ]) ] Z/ @0 F2 k
定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。8 Z5 M) o. W% A! {
2.1.2 Timer2
6 {, `3 l: g7 l3 a* n9 y2 D: d% A: ^4 [5 N% H
定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。
( p8 }- ?1 d% Q/ O& W( m) ]# b( ?# i$ ]* D3 C4 y5 ^ S2 A' L7 J
2.2 寄存器介绍
* l( ]( G- S( ~% z2 d$ C 2.2.1 定时器0控制寄存器9 e, H. V4 K) j1 B9 d: c! b
S9 U K, l8 H4 i
) f2 O# p9 c8 ~- U2 n7 }! T# ^ 图3% `0 y: I% D: @5 P4 X% C
15:4位:保留不使用;2 L% y+ Q8 v+ B: ]" i$ p
3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;+ J& f3 ]/ e" _: _( k; O! S1 m
2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
7 {2 l( L- o( D5 W7 D 1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);+ V. l, z" {/ H- l" E
0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。
% R$ O, J! E5 I
# @- r+ W4 q6 _ 2.2.2 定时器0计数控制寄存器0 h# Q1 V+ k3 G& L) { H
$ w% v: a6 ^& q1 r9 y
% h- O/ Z4 X0 M! d) j5 F
图4
/ {9 N1 @7 |4 S/ s# D 定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。- Z9 b3 H: h& J5 a4 `" G
2.2.3 定时器0高电平重新装载值
, M3 F) a! |* e7 n) I( Z k% k( G3 d7 ?4 N$ m! A% V
8 i) R6 R0 G# I. P2 x2 }5 g- k! N 图5
% k( n0 B, C& D5 S3 C; [ 定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。+ J( ]2 | }1 O |1 m! N
2.2.4 定时器0低电平重新装载值
* u$ i6 c3 n$ k L2 D5 H
3 {; }" `( L( M* ]
' s# A, \2 y. e! O7 W( M- [
图6
7 \& |! R* J% i9 b/ E 定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。$ t% R) L4 x( i7 b- m5 |* K
2.2.5 PWM2占空比& D" I" D! J+ D+ k
6 }+ _, _7 f# |$ y+ t7 ?
. a7 ?* u3 q8 o
图7
. E" o2 C) t3 J( T/ n% }. {& m PWM2信号的占空比。0 w" c) P+ I2 f: u) j+ J
2.2.6 PWM3占空比; m9 S7 E }+ W8 K, g7 @3 A7 d
' t$ |) z2 T* Z7 x& f
4 q# ~. l4 I# n# {1 | 图8
) G q% |9 R: G PWM3信号的占空比。% z! k3 q7 y/ b' U f$ y3 C! O
2.2.7 PWM4占空比) P+ o+ u) ^# f5 x6 W, W
) _0 o2 \- y2 o" s
0 h$ ]' P; h9 i* q- G
图9: \) K; s7 [/ t6 o6 b4 |8 m4 J; r& |
PWM4信号的占空比。
7 }, g4 n/ C) ~) b4 r; a 2.2.8 PWM2,3,4的频率% m) q- K$ M# N" S
3 t- g, k3 A) W* F
& o0 j7 T2 b5 G. a0 A 图10- }- b* B7 S& V& \6 D
PWM2、3、4信号的频率,三个信号频率相同。- E K' e5 F; {
* ]; ?7 t. y) t& L3 W
2.2.9 PWM2,3,4控制寄存器
) u# o* ^' K. \! F& b( Y+ T0 R( _7 { p6 p4 i" {
7 {, J- c# l1 S0 u
图11
+ ^+ L- J. v& i+ R# ? 2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。# z! v3 G8 N6 e& s( D5 z0 w- s9 }% ?
1位:软件暂停使能,为’1’则PWM2、3、4暂停。3 h o8 U# G( K' W7 U* r
0位:PWM信号使能,为’1’则PWM2、3、4使能。
) M2 }5 ^' ]+ z Q/ S% M9 g
# T, N% v/ }+ k& n, ] 2.3 寄存器配置讲解
& E/ F: O! _( j) V# p #define CLK_PER_REG (* ( volatile uint16*)0x50000004)9 h6 a- r! i# d3 C$ n5 x) P, g; z6 {
#define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)8 G/ |! O# F% V- x9 J: w
#define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)
3 Q: m8 g" T9 W #define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
/ ]/ q$ K l% ~8 g' o5 H #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)! n. s( ]- e" K' c( c: N
#define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408)9 W* C1 ~" g. e4 G4 a$ {
#define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A). q" S) u) U% {5 _
#define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)
# i: F% B/ P1 G% o o #define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)
! c5 S1 q6 b) P& [ #define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410)
/ N+ l$ F& B% v+ B 启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;0 ^* s9 r. W4 e. L2 }, v" p# u
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
. j3 g$ q) P" Z/ | 设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;
" T0 I2 E: v3 a) q2 ~) `, s. I3 x 开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);$ T# L/ z2 o( T
启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);7 T, w( a# A+ J; J) M6 B
) D$ r# B j$ _# L, j/ ?7 c4 U# _" { K, N
- u/ o8 F' O" p, M% ]
8 j! m7 ~* F/ Q, R( w4 a 第三节 定时器实验
5 I. K3 @4 `! T
! x8 O" P; A; r! G$ d6 h6 C 实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
: c5 D1 u( \. r% c' u) q t 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:6 S9 t) e/ E* ?& {' C9 I: p
(1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:; |2 t& D2 E, B3 s
/ c, P' `0 s1 i3 W1 ] s6 Q0 J
- o' R3 B0 X! g# t+ d2 c2 K 图12
; O' t9 o4 i$ h3 D# J% v- z (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
- S8 M3 Y$ A! b1 m% }$ f0 E4 L# C0 b$ a! Q4 c7 N( V4 Y) @
; [5 I6 Q) K$ r9 n9 u' k
图13: \7 o0 J5 \: x
将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
& n3 ?' o" |/ E' m' o; f o o 打开定时器实验的Keil工程timer0_general.uvproj,位于目录:% ]$ }3 x/ R! d# p8 \: n
..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:
, r% m# G/ W& K. h9 J# B! x1 v0 Q' t: \
G+ Z, W: D* J 图14
" H$ d" @$ A( J { 使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
& }! y& e, v( |2 |
6 @- }; \7 _5 I2 p$ Y7 r
8 `! g- x$ S% b. l% H0 A8 S+ T+ P a5 L j
* @3 a9 D3 b8 w6 ~$ b
图15* I! I- ?/ O- e
" f, q- o* t. p1 m5 K
9 n" }5 s# e% y5 q( g( P4 U; y7 [
! A% |: ]2 g' H 文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
( Y; c7 r0 h1 ?+ X
. }9 p8 y4 b5 m$ v" U/ A
( I. T" A& y, K, f4 F! W3 h |
|