|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
——疯壳·开发板系列 定时器实验教程
* ~" H; f; v ^. G, ]: v8 v; [/ n6 @, M$ v: P7 z) B0 Q
# E5 U8 v. d, }, n; P# P- n) z5 f; J
/ Z9 c' G3 k0 F# Z7 |/ |+ [5 w 图14 n- T& ^( N6 Y
' b* j+ p# d" v
5 f i* w- A( E# f6 r9 W/ @ 8LED硬件电路
' o' r7 _$ G! i* h
- e6 {) D/ K" ^8 ~" r, J 板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
) |' f4 [1 V s4 ]3 w" {, Y! _ c9 k( m" }" P- D' Y9 ^
9 S& m( F6 Y6 t' R9 r. W3 o) m
图2
; y2 V% @7 P, o8 R$ p4 o) q, n8 d- ^- c( `: K6 }0 E7 f( _$ X$ V
第二节 Timer寄存器1 A& N7 @* O& V, |) V
7 e% C! y) K! ^. n* ^
2.1 Timer介绍: x/ S, X$ n" s2 V1 _6 |
! I9 ^; `1 i- q" {; U* } 软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。1 D0 }1 a! T+ s( K* y
2.1.1 Timer0
# O& B) ~" R; K2 U
K/ p+ S/ p' R; ]$ n 定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。3 j# a- O' m5 J. R0 K* ]9 J
2.1.2 Timer2
; q& b' K+ L/ W8 D6 J) J9 h8 B3 E8 D6 H) P( \6 c' v4 Z
定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。
7 Z2 D) a/ P4 W6 ~! z
3 }; ^5 h3 n7 ?; }4 Z7 D 2.2 寄存器介绍, F8 Z* u. _6 T0 |, h
2.2.1 定时器0控制寄存器
- N% j! J0 L- {- R* B! M- n- l/ {' N" @. v2 e
- p/ @0 _9 W7 T- U8 N- n: R: t 图3
* C) {2 M8 u+ V3 Q G 15:4位:保留不使用;0 Y+ I$ b8 M' ^+ V" U
3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;
: J6 k U* n* q5 g; m. R4 Z 2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
2 d) F: D4 b1 A* x& ?: x% r 1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);
' Z5 K+ D- U+ N( Z5 H2 g4 N f 0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。
/ n& d" v' J: Q$ ^
8 o6 u" G9 p/ ] y. g% t' j3 q* C% | 2.2.2 定时器0计数控制寄存器
- }& N t6 J4 n. i8 [6 q) O9 t( p0 h$ K8 s2 F8 |( U
3 h5 \( V. N$ Z2 T5 ^
图4
4 ~& k: ~$ `; r6 t8 e$ o( b" S 定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
! X8 W# o- N( U! Y# r/ o8 n+ N 2.2.3 定时器0高电平重新装载值
" [2 K5 |: E3 q, M' W( B, a! n" d; Y8 t* B: z
2 t( ^" E2 a1 x4 f4 y! Y9 d; W 图5
i6 f1 d% w% i! L 定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。- t, Q* Z* ~% ?+ _! z6 k
2.2.4 定时器0低电平重新装载值& h7 Y0 s$ }+ r( Z# T) ~5 P# S1 O
' T$ k4 ^( d \* q
9 q# u% F. \* ^; h$ }# h
图6
5 V6 ^! B0 q( R 定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
, k. z9 ?2 ^9 Y& s( U 2.2.5 PWM2占空比
0 I: h& f+ p9 D
$ c Z: u+ _6 K/ C& I
7 T. Z; j+ ~4 w- C3 O2 b5 Q
图7& V: J& n% K0 [1 i0 M9 Y
PWM2信号的占空比。
( J+ g+ D+ G; M9 }2 s2 Z5 } 2.2.6 PWM3占空比
7 a# t& r$ \! W I9 J5 a4 D- p W5 s0 a: n, L' Q
# Z% \( k$ Q1 _: Z1 g$ o5 l 图89 _) C) A+ @, v* M
PWM3信号的占空比。
F+ t5 V2 y% r- f' S' v5 n 2.2.7 PWM4占空比
8 p5 y; q ~/ t; z" }* s+ B& l5 y7 c5 a" e! h. D1 r- X7 n! m ~
1 k0 T, ^& o1 @8 h 图9$ c# I) b5 Y$ X* z# l8 ]+ `
PWM4信号的占空比。
_& U1 [0 [+ Z8 i 2.2.8 PWM2,3,4的频率/ n' R/ D$ q- \8 w
6 {& h2 |1 @- A7 M! r3 U- d; }9 e
0 B ^- ?# H+ }9 K9 |8 q2 L
图10
5 Q( m9 S9 o- ~" O, \ PWM2、3、4信号的频率,三个信号频率相同。
, X$ H! Q- s1 C( I! r% p. D( O( E
) ]2 J( c9 [$ q1 F1 N 2.2.9 PWM2,3,4控制寄存器3 U& O9 ^6 P& D
3 ^' z; f8 ^/ u+ Y
* J' f: h9 h0 T9 j 图11
! `( P7 _3 T' @7 X8 b2 k4 E 2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。
- [/ H% U& X& c- \8 m+ {' J 1位:软件暂停使能,为’1’则PWM2、3、4暂停。
& t! S* J$ @8 p+ m/ R7 b$ K) h 0位:PWM信号使能,为’1’则PWM2、3、4使能。5 A1 U! F! s- ^! S: L/ U
. X w! i# L2 j9 D2 p 2.3 寄存器配置讲解0 {+ J1 S/ b+ b5 q( |
#define CLK_PER_REG (* ( volatile uint16*)0x50000004)# n+ C' `& l9 v) ?* U
#define TIMER0_CTRL_REG (* ( volatile uint16*)0x50003400)
' u: a2 G `( G2 } #define TIMER0_ON_REG (* ( volatile uint16*)0x50003402)1 ]9 y$ h% W5 C+ y
#define TIMER0_RELOAD_M_REG (* ( volatile uint16*)0x50003404)
7 Z8 }& O) X. z; E7 v #define TIMER0_RELOAD_N_REG (* ( volatile uint16*)0x50003406)3 f% _: J" Z4 s- f/ y' `
#define PWM2_DUTY_CYCLE (* ( volatile uint16*)0x50003408)8 ?1 e6 Q/ o4 ~. o
#define PWM3_DUTY_CYCLE (* ( volatile uint16*)0x5000340A)5 ?8 X* q! O+ U$ d" {8 j# }
#define PWM4_DUTY_CYCLE (* ( volatile uint16*)0x5000340C)" X5 p% Q. v& M$ V$ y5 u2 s
#define TRIPLE_PWM_FREQUENCY (* ( volatile uint16*)0x5000340E)' Y! d8 S. l' O* l! u
#define TRIPLE_PWM_CTRL_REG (* ( volatile uint16*)0x50003410)3 c7 G) B. g$ d6 x
启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;7 c& h+ l4 F" a; v( b
定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
4 k/ u4 O, L; l: \+ G' |& t! u 设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;
4 c. \( G- ?. _0 \* O- z. h 开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);
4 y' W9 f4 i5 H& u! P, R- {/ K& e 启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);0 n6 [2 \$ N1 y$ d
) C" j) t- ~) J
: E! n: C) \1 C& D+ Q* t
r* ]$ `) D. R. i& y 第三节 定时器实验( S3 E6 y l, W( F. c
! D; D K" D+ h x: P& O8 c" l& H+ ^+ ^ 实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
5 ~6 K( a6 O, h$ X8 A. g 使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
5 H& k% w# D8 ^$ z7 Y7 i (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:
1 }/ L0 ~8 E! r2 {$ q$ d, K' G, x' _/ b. O9 m+ G$ _- Y" u( ]
* m1 J) t8 F0 n1 u$ [3 f* h4 A! Y
图12- q U5 g$ w3 z+ _2 a5 @! `
(2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
9 b+ P K7 G, d2 Y
! ]5 z- ]& B2 |$ c6 N3 y
8 [- a9 L' }- K- Y+ ^
图133 w* Z0 z, C! q) y; v
将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
: ]- D% ?3 `$ `6 _ I' x9 R" s 打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
, l0 w4 [5 t/ t; z. J. ^5 |' ^ ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:5 g. Z: W. ~( I1 P1 I% [" \8 a
/ G0 t3 a; e( X1 u
7 P; p9 m/ p8 a* d( i6 e$ R 图14# ?' f: T. D% E9 A
使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:9 T) `1 \- l4 D$ x/ f8 i" w/ w% V. V
" k, d4 Y" i% u S. D% [" A5 s
; S8 q6 q; H$ l+ Q5 N
/ l0 x2 K0 L2 y1 e+ p/ ]- S
3 t1 @8 d" M( T+ w 图15
$ \$ d) U% V, R8 k$ P) i2 t% g6 V. C# p' f1 Y# |
1 X% b! T6 a% ~1 Z
; z0 Y g! R$ v1 `1 s* l 文件下载请点击:
Timer教程.pdf
(750.77 KB, 下载次数: 0)
- [* O6 j1 w& {$ c6 a, L
% W: h/ l2 k1 _0 N, d$ i
7 V+ r2 C; r S1 J8 O |
|