|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程 ; @8 g4 ^5 p9 ~8 d3 D
2 ^: Y0 c: b( G# c7 F2 _0 K
% a5 ?2 ~) S" U z7 t3 J& C8 ]4 h
6 W! t! o9 U6 \( d# e
5 ?' b% F. j4 w( `4 }8 k3 i 图13 A# f7 n, {" G) i6 g+ A5 \3 N+ C6 g7 U/ Q
0 Z0 s, B# Y5 g3 { i% S
9 [) g9 ~8 e: p9 o 8LED硬件电路2 z3 U/ X! i7 T1 G) M) O
/ Q/ B& o3 ~: F H$ i# |! T 板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
1 d9 D0 r' n: B, B# O# Y' B2 V# `1 a' w' x7 k3 [+ R& }0 T2 a
/ r& i7 `: w* X9 O' f 图2; ~( b* R9 x! @; N3 j
9 z8 t. N' C( O9 Z6 e
第二节 Timer寄存器5 A9 `' y- y; [$ U' |% U' c, H! t* l0 e
1 m% t F: g3 }0 L
2.1 Timer介绍
! q% c6 d3 S+ p6 ?) X
$ \4 q+ |9 d$ ]& C- j7 A2 m 软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。
5 O4 V$ O s9 \$ K2 E 2.1.1 Timer0
5 _6 t3 Z& j( Z0 v! q! \6 a) ~6 H5 D/ {& G2 a
定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。1 I, D9 M7 Q8 m# l4 k5 [/ L' B3 |
2.1.2 Timer25 E5 r" p! r! y Y6 D
$ l9 ]& o8 b: g4 Y& r- C
定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。# w1 s! z8 n8 c7 v4 w; {% f2 ^
# u: U! \0 C- P; _5 g: E% o
2.2 寄存器介绍
* V3 m+ m; R4 O- u3 Z; ]5 H- l6 J! P 2.2.1 定时器0控制寄存器
5 J, V2 _2 V7 l, Z) W5 H" L& z
" x: W$ B6 O' c. f8 D/ v' t |' f
( m- J& O- l, W. c% _# u( ^8 P% P
图3
7 c# A$ c" Z) b 15:4位:保留不使用;! p9 E$ x* | Q
3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;& c9 l: k4 ]3 J: ?) D
2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
9 F1 ~0 `4 K* I) p- @0 _ 1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);
: B$ M( A$ y6 A2 R# R! l0 y 0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。
8 x/ f! a7 `# u: m+ b" a: h* `/ g1 {5 Z
2.2.2 定时器0计数控制寄存器
, W" B9 W4 l( |7 S, b5 }. N( z% Z; ^. B
9 H! f4 G: v4 C! y# v 图4, t+ f8 d+ u) G/ \ p M
定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。# ^4 T- Q8 a1 v$ |
2.2.3 定时器0高电平重新装载值9 _3 T* h5 k; X0 S2 H
7 v* \2 r+ F- U6 b V
! f" o+ R# |* \: s' g9 [
图5: y0 u# g5 b) P* X8 H
定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。* Y- j- N3 i; Z3 n+ n
2.2.4 定时器0低电平重新装载值
/ Y9 }( n: s) }" `/ e
! a X! p, D6 G5 t, m: l
; @. B+ y/ ^) v 图6 m5 K; \3 M+ J/ p7 ^! A* n# D6 \3 c
定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。: Y$ f. G8 u" p: B& j5 m
2.2.5 PWM2占空比
4 n. |+ q3 K% I- v* d3 v7 t' ~2 |
4 S: _: K- d& c; W/ V" E3 _ 图7# ^% p M7 }0 Z: T
PWM2信号的占空比。
8 M7 h$ Q! m' _( i/ w 2.2.6 PWM3占空比
8 a" q$ I! g- \% K7 A" J( q4 i; g, U3 P0 H
3 l3 T6 G- _6 a8 ^. U; y
图82 D7 D1 s1 q8 A( i& h
PWM3信号的占空比。1 r/ l" g k: M
2.2.7 PWM4占空比: o8 F0 k0 y! e( P4 B2 o* C$ p
- Y& X8 m& a( A6 F5 V
, Q$ g' |6 K+ E/ |6 | Q6 J M
图9, r( Q/ X5 }. e* X, f, D
PWM4信号的占空比。: G& d9 U2 |- f) F1 t. x
2.2.8 PWM2,3,4的频率' e8 ^) D; y9 U6 Z
/ m( W7 `0 ^5 ]/ B, \+ ^
8 \: P9 N8 b# c; D6 A+ ]5 ^! U3 F 图105 R" ~& x6 q0 `
PWM2、3、4信号的频率,三个信号频率相同。
' D# O, R4 m& z- ]9 p/ v0 R+ l; s! \5 h" A
2.2.9 PWM2,3,4控制寄存器( g. e; w$ v; W1 `: i
) x! L1 G, C( H- H/ O2 \2 u
3 s* Y" V, m' U
图11
1 K" Q% C) }& X 2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。2 s! S5 d. `9 I: `
1位:软件暂停使能,为’1’则PWM2、3、4暂停。6 f+ }6 E- P R" C! l
0位:PWM信号使能,为’1’则PWM2、3、4使能。- |' |! w- i+ ]( ?; \4 S$ K7 Q
K3 {9 l+ C1 | 2.3 寄存器配置讲解' a2 H( g S( Y. N& p$ r5 s
#define CLK_PER_REG (* ( volatile uint16*)0x50000004)
0 e% {5 R! W9 w" u s/ t1 v* u: @ #define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)9 P* R0 Q( l$ v
#define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)7 L/ L0 J" g0 |& a/ q+ L8 A
#define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
( F3 b* v* U2 s1 C' c# W #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)
) d# f" D0 x' o- k #define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408); {7 i l5 a. h9 V3 d8 I# b+ K
#define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A)
2 a# _: O0 [( ~/ k1 E9 q6 p# O #define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)+ Q' v+ l' ^* O L' C& H( W( q
#define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)
5 I; v7 _5 M/ l9 }6 i k/ f #define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410)
n- ]8 T/ G8 s0 I- D 启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;1 I( R) z5 P: U& j
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
8 d, d5 r* s# I3 t# ? 设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;& H+ i* z: F& M e; `. P8 M0 \7 r
开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);
2 b# ?/ W* Q- Q) R* C0 a {! s I 启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);. e5 v( q( ?8 j6 R- {2 x/ h
7 J7 a5 m' l% M4 R0 D0 B
( Y% o5 F$ |' r% U1 W% Y/ j$ T( A+ {1 f7 i$ n
第三节 定时器实验
5 K- N2 y% L X, Z+ d4 q% S( Y
, z$ n; a% \: \, x3 m 实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
9 x/ j+ s3 k; G- C( W% N& l 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
0 `: l5 q. h8 F) f* S3 V* { (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:& G$ U- S! Q2 T6 [
$ y& r7 F) o @, T5 d; I
; c+ Y2 d, G# C0 t5 }1 \8 d, _& J7 j
图12
0 P7 o7 E q& R7 Y (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
u: v1 r* v5 _0 p) q8 _; u
0 t6 {- ]: L* q3 \
- ?7 {4 W7 e; `) C; Y. s4 ]1 a 图13
5 y2 R+ }. ^. Z3 U d' B% N! A; X 将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。% Q$ Y$ G* e( Y2 y5 j
打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
$ z* ^3 Z. c4 Y ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:
$ ^) F! V5 p8 V8 v! H$ |4 u7 ~+ d6 z! h2 Z8 i
b: D0 m4 y% z6 g4 \6 }9 ]
图14
c" P- T$ m" e0 m; t. ^# K( R; n! k' M 使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
% U* l& C4 s% _/ h+ {/ H/ j: C) P* ?% f9 `0 S M
# X# A- \7 u) K+ Q
, t* X# I* l; W* \' K
' o( Y8 [' L, ^& ~( a
图15
* [. h- S; I6 z& W; G8 O2 w1 f* B
) A8 s/ V- N2 r; x: l `0 E$ b r4 A, Z; G
" d! R g1 |$ @$ W2 C3 B' {, n
& A, j- y) C( c) t) ` 文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
' `0 Y9 [; v! o+ o( P2 t+ ?- |( f! r W
$ ], q+ p! S1 ?& m
, S' U/ W5 T T
|
|