找回密码
 注册
关于网站域名变更的通知
查看: 138|回复: 0
打印 上一主题 下一主题

【开发教程10】疯壳·ARM功能手机-定时器实验教程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-27 17:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
ARM功能手机
——疯壳·开发板系列
定时器实验教程   
9 w( D2 t+ S. g" h+ _+ M
! ]- O& M* i- c  c- q

7 m2 h! B. i7 X0 G* Z2 U# [+ }+ u) p" i7 U7 D/ J" U+ f
# D$ K+ B2 l* y* ]
    图1
% K* J# r( e# a/ u' Z4 @  ^
; T' @+ \6 ]3 L  k3 D" |% A  L: g5 [9 i
    8LED硬件电路2 Q* y5 S0 `2 a$ Q1 I: \4 O( g6 H1 s
1 v; T4 I; f- t. P& j
        板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
! P6 V/ L4 x0 V# h/ U+ Q' _6 @( c; N) N: I! v* ?8 v0 x3 g
    - x/ z2 G: L# D) z, c
    图2' ^/ |5 O9 D# `* w: B9 i% ^% J

8 v. d" P/ `) S# s! C+ W1 a( m    第二节 Timer寄存器
4 P2 M$ `+ k* z  y0 k# L  E3 o' T& E0 h; h# X
    2.1 Timer介绍
* {( |# E  l+ W: z& B, T6 q8 e0 F( U8 [( M( C- j/ f
    软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。
6 C( E7 ^; \( B5 ~* x    2.1.1 Timer0( ?+ _, ~% O" s" i
$ [( L' `9 }3 {. `+ p# t' M
    定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。
( T2 g4 f  u! r! C0 ?% i8 g% {    2.1.2 Timer2
) \# l! W3 [' `2 K$ s5 g" Z1 R0 F6 u
  S' |* S& x1 ?5 |: J3 n$ x    定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。3 i5 Y1 P- d! w1 E  R3 \# s9 B

) P+ D0 \2 a/ e: E- L% [& ^    2.2 寄存器介绍, i/ |+ V; B9 \  X% E- n% S
    2.2.1 定时器0控制寄存器9 n0 X  _+ L7 I% `5 T  [! H
$ p& j" O/ m* T- ?7 y/ U- c
   5 E5 ]3 Q$ _2 V$ W, b* n- e
    图38 y! W2 D3 ?. ~! P7 v
    15:4位:保留不使用;
  C6 c' G& t) a0 a& M3 H7 s    3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;' y( q9 j$ v% L
    2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
9 N# Z$ C! N+ ~/ K    1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);. x; ~/ }+ g4 @1 a, _% ^
    0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。
& q( ], W3 @' C9 |6 F+ t8 G  g
( z* |4 ~4 p9 N2 q4 t7 \    2.2.2 定时器0计数控制寄存器
5 K7 Y9 q8 e5 O1 s. V: o: J& {6 }6 f/ `9 q5 X% h4 J, L5 G5 P( c! m

# q% {. C3 |! Q0 X3 I, D& m    图4( w  J1 j! S6 H8 E- Y3 O/ x
    定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
7 D) `- K  x/ d# K    2.2.3 定时器0高电平重新装载值
) R( L; [* k5 m3 Q7 A- G, k1 }5 u7 |! e5 r
    : d& t9 T- j" k
    图5
- e' k/ z9 ~& \- c% x! ?, j    定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
# `7 `; U( L# \8 ~6 _2 C    2.2.4 定时器0低电平重新装载值
0 U2 g7 B' h- V( x2 v5 h8 M
7 @$ {6 d- r" K, l; _3 z    
3 |. r. x7 X5 P: y9 z9 w" Y; f4 n9 K    图6- F( n# @& f0 N% h8 E; A1 o5 M4 ]
    定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
- {4 ^4 H0 c0 R2 c9 l    2.2.5 PWM2占空比- C9 H' n" Z9 W4 D
) a3 t0 d2 z. E1 I8 q
   
) Q! ?$ v2 o7 v3 o    图7
1 M. R# W9 f% P* J( T    PWM2信号的占空比。, \# ]. i7 M6 x- K+ P; h- O* P
    2.2.6 PWM3占空比
% G; ]6 T- D$ ^+ f
" N* [5 Z# l( s2 N4 r    
! K1 o/ A- w/ {1 O. o' O    图89 W4 |, _8 h% z. ~1 J
    PWM3信号的占空比。, P9 B0 ~' z8 R! L" X5 O' G
    2.2.7 PWM4占空比6 \( m& l5 U4 N* L+ k$ q8 f; P+ m

4 A2 L% v  E2 k- X9 s' b    6 Y! U: r: f0 M: R- g
    图9
% a0 J+ X/ g# T% r/ m: h# A    PWM4信号的占空比。
4 v% h7 j6 z' Z# S2 ~    2.2.8 PWM2,3,4的频率7 H1 s( Q' Y& b+ G; i  I" j/ n

4 {5 \7 a# R5 x+ a    3 @. K+ ~. g8 Q7 q
    图10
0 P) g7 Q( c+ S1 C    PWM2、3、4信号的频率,三个信号频率相同。; A3 n, v: z; Y7 Q; A) f+ C4 g

$ r' b( g# ^1 o& w    2.2.9 PWM2,3,4控制寄存器
2 U2 X4 G4 D# g, s6 i9 X* D: P
2 h# p; d9 u/ `    
# z+ I) l% s1 f; \# p    图11, c' z; K3 N) M. q" P* X
    2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。7 S" }- A, p& O& [7 H( l% k3 [- ^# m
    1位:软件暂停使能,为’1’则PWM2、3、4暂停。1 X, u! f$ U$ ^5 M& H' k/ Q
    0位:PWM信号使能,为’1’则PWM2、3、4使能。% X. K9 m) q0 d( w& j
0 ^: O. K; r. B- D+ |' M
    2.3 寄存器配置讲解- e9 G- S: ]* w2 ]2 h9 n
    #define CLK_PER_REG             (* ( volatile uint16*)0x50000004)
0 w8 A$ A% f: a. F    #define TIMER0_CTRL_REG         (* ( volatile uint16*)0x50003400)
. ~4 P' V% Z: E, E% Q: I5 s3 n    #define TIMER0_ON_REG           (* ( volatile uint16*)0x50003402)
0 y( G+ q8 R$ N2 `' E% u    #define TIMER0_RELOAD_M_REG     (* ( volatile uint16*)0x50003404)
; a% O( E, u! A+ x% V1 U& h    #define TIMER0_RELOAD_N_REG      (* ( volatile uint16*)0x50003406)
, w! d. d5 y) \6 v9 o6 x1 P9 \* N    #define PWM2_DUTY_CYCLE          (* ( volatile uint16*)0x50003408)
' i" S+ f3 \7 F" e    #define PWM3_DUTY_CYCLE          (* ( volatile uint16*)0x5000340A)0 ]8 ]7 ^- N7 l+ h3 @* q
    #define PWM4_DUTY_CYCLE          (* ( volatile uint16*)0x5000340C)( Z5 ]; w. ]* ?% ^5 ]
    #define TRIPLE_PWM_FREQUENCY     (* ( volatile uint16*)0x5000340E); b& s0 {# i  X( Z  z
    #define TRIPLE_PWM_CTRL_REG       (* ( volatile uint16*)0x50003410)0 s2 a  p! i& F/ B. A
    启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;
( I/ Z3 L& p  u. l) A    定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;2 B' S1 i% a* ^3 F4 a6 P
    设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;( I/ g( n) X+ f" S4 f/ c
    开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);" A7 r7 [* D7 Q
    启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);3 b# [0 m" N, @' r* R0 E" Q

) u9 d9 ~$ t2 o  v
7 |! m& N9 h0 T2 K0 ]9 d& V- m( R/ q- x6 t2 y! x7 ~, E
    第三节 定时器实验
( {7 t  W! Q% C: ^/ z0 ^* z; i" A% u# @1 x/ O
    实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。4 j+ {3 \* t" ]. b7 @% v
    使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
5 x( b* y; d- j    (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:
/ C' Y$ m$ @" x6 K7 f' J7 q) U: c" p  Z
   . X( c; \  q& e  A5 e6 M8 v
    图129 s) z" u: l8 o7 T
    (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
  V, m9 c  |  t# w' y/ T
0 c: d6 F( O6 \5 u, S    
" c: r+ g4 {6 K. U& r! o; k' z    图13
& e1 z: d) E" ~* T- ~    将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。6 n" I) Q: k+ w8 H$ Y
    打开定时器实验的Keil工程timer0_general.uvproj,位于目录:3 S9 m6 ]4 V4 q" P5 g& ?/ r
    ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:
* m  h" w) S. O. G
0 T. p" e9 U+ Z9 w* C' v4 o* U7 K     2 r: x+ ^1 u% n7 Q( H3 i
    图14
8 t, O9 n7 @' a) o    使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
; B+ m6 a3 m7 a% X( f4 E1 H. q6 P0 d# P

, F0 P( n9 Q: B/ W2 F5 l- G/ v* m0 l
% ?- J0 _& u: O4 Y: ?3 n/ @4 C    
3 F: ~# S0 ~% H. _8 r6 J9 B    图15
% n0 ]  h1 m& Y8 C9 @- t- r2 ^' l8 E. n" h

0 m& q: `. k9 y! _# @: P' E1 p7 X/ F8 B% m% f" }' \: s

* I+ v7 k' `* T( e    文件下载请点击: Timer教程.pdf (750.77 KB, 下载次数: 0)
2 {; ?) u; ?# g$ n
/ h5 _- n, T: J* H" m9 Y( ~" \. w/ ^( C: V- T3 E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 15:35 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表