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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ARM功能手机
——疯壳·开发板系列
定时器实验教程   
7 s# k) g* b3 k2 ^# m% o7 W& D
" W9 `; S( E1 D. M1 h" p0 N6 V

, D% c" _$ A- w* s/ w" t
, H5 e: W9 J  {$ a/ Q& I; \ 0 U8 h" [* x8 P6 g, G3 n
    图13 B- p+ ]2 P2 d) u+ O0 }' J, i1 B
: m5 v) o4 R4 p6 F, ]: ^  `/ r4 x
& ?+ X+ d  \2 x1 N! ?0 e5 G
    8LED硬件电路
8 o) g0 u: N% p! m8 O
/ q+ t. H+ |% m        板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:
' U9 {6 C. y( f+ Q% s! m( Y1 V; Z# f- B
    * l8 L5 I* |' p8 p) d1 T5 m
    图2: T- C/ c* L/ ]# }5 m/ y3 {" e
' x  m, e! G9 N5 y4 t
    第二节 Timer寄存器
% s' ]9 [: Q. T& C9 \4 z" w8 c  u7 }1 C! }! w
    2.1 Timer介绍
: G7 ?# T( K/ w  ]) J
0 c: c' q6 }8 B5 h+ }) v    软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。0 i1 l% M3 [' Y- j' ]! _9 T
    2.1.1 Timer0  m7 ^9 y# c4 `
/ V% r" t4 D1 G9 i
    定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。2 z) |" ]3 s- G5 B
    2.1.2 Timer2
) P& y" R- n1 A, h0 d% V
# W9 ]# }$ x5 h# R7 }    定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。
4 H7 O3 p9 m, I1 r$ _$ ?5 G9 l4 S' L9 n
    2.2 寄存器介绍
. ?1 K+ I8 E( M( n    2.2.1 定时器0控制寄存器
9 m2 t, `) w7 J  w. n/ m+ [3 e) a  m
   
% Y4 {! l( v. v3 }. X$ Z4 E- M: E    图38 J5 Y5 I1 e5 ?% ~! ~% M8 `* ?
    15:4位:保留不使用;/ X# w% E. p& M- }+ ^, |; n; L# q3 S! r
    3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;5 _! {7 w$ u; A: m& k
    2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;& m7 S3 [8 z5 E1 a/ I
    1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);- i5 B5 v3 `/ Z1 ~
    0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。, J5 o; _& |! h9 g# S8 J, L: l
$ I# b/ F5 Q) G6 j
    2.2.2 定时器0计数控制寄存器
3 M) J8 E+ q; J! @9 l5 q9 k0 R' O. H' m1 s# i, `

2 ?1 m: o  H* Y/ d0 H  B( P4 o5 d6 ^    图4
4 l. _) B; w) i9 t! b    定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
. B% I9 {4 b8 D7 s    2.2.3 定时器0高电平重新装载值6 d( U8 X+ a& m8 z: K# R
/ ~) g: w- t  I8 L% H6 d# T, ~
    0 a5 ^/ ~6 Q, l/ F4 P
    图5
3 `1 J3 q& ]+ w  B    定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。! P: B! @! Z% V8 G6 o, S, N2 J
    2.2.4 定时器0低电平重新装载值
' y5 t# t+ Y) V* o( l" f' w3 [- Z% y, d6 j* S; `7 H' s
   
3 z) m* M: d2 [- ?" c, e    图60 d1 f7 r( X/ b3 G. \
    定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。8 T3 @" \4 O& c- g+ ?
    2.2.5 PWM2占空比4 {; b9 P& Y$ a! @. q
8 S& y+ e" X6 t7 u* u' e3 _
   
. M6 G$ Z; Y+ a    图7' i6 G% {( o. u7 \  T+ O
    PWM2信号的占空比。
! b0 }! l: C1 [3 l, A    2.2.6 PWM3占空比0 B! E+ _) j" s2 R6 y  p! n

% t+ D+ I7 M5 ^1 A: C; R7 a; j    $ t# x5 j  D  P/ h; P  o8 ]
    图8
2 N8 w6 J6 E( r! n: H$ A" ?    PWM3信号的占空比。7 f! G4 z$ Z9 M) N/ y1 g# e2 y
    2.2.7 PWM4占空比. T8 D) Q9 J9 A. e* K# X

2 N* Z6 T+ Q% L9 Y1 L  `    + L& k& F/ @7 K$ J2 Z1 G
    图9: E4 {( c8 \1 V( F* l
    PWM4信号的占空比。
0 Q( i, O$ x5 \8 a3 |    2.2.8 PWM2,3,4的频率
; y% m$ B" m' Q$ z& ]9 K" i  n% J
   ; v" b/ M: u  `) Z
    图10
6 w0 R6 ^; J5 }$ W    PWM2、3、4信号的频率,三个信号频率相同。! G2 {4 L9 _7 s2 t7 m

  e' x3 I, v' u! R+ @* {; k% Z    2.2.9 PWM2,3,4控制寄存器
; q: @5 _4 J' z  [
. A" U) [, A% x0 O' k/ L    
) d( s- e/ K3 e! \    图11# ]* x. ~1 v% K* \6 N
    2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。- M; Z1 M- B: |3 C6 r/ `1 w( ^
    1位:软件暂停使能,为’1’则PWM2、3、4暂停。2 S- j# F2 U- Z( k9 E, Q
    0位:PWM信号使能,为’1’则PWM2、3、4使能。' r6 u) [5 }6 p& m9 g1 i5 m, V

+ _8 o& z+ p/ Q/ Y4 j5 P" W5 F    2.3 寄存器配置讲解7 S; c& V0 ?: v# ]/ n. k
    #define CLK_PER_REG             (* ( volatile uint16*)0x50000004)
$ E* E: j. }! s7 c7 ], t    #define TIMER0_CTRL_REG         (* ( volatile uint16*)0x50003400)
: c7 u, T9 u1 {- |1 T4 Q    #define TIMER0_ON_REG           (* ( volatile uint16*)0x50003402)$ ^3 G- L$ ^( z' }
    #define TIMER0_RELOAD_M_REG     (* ( volatile uint16*)0x50003404)
8 |4 O% F: m7 i    #define TIMER0_RELOAD_N_REG      (* ( volatile uint16*)0x50003406)
8 F6 g' y/ m' _1 M5 n    #define PWM2_DUTY_CYCLE          (* ( volatile uint16*)0x50003408)7 ^' w5 M9 ~  {/ E  G, S) m# y
    #define PWM3_DUTY_CYCLE          (* ( volatile uint16*)0x5000340A): L& ]! @/ e2 k* A/ {5 M
    #define PWM4_DUTY_CYCLE          (* ( volatile uint16*)0x5000340C)' w  {" X) ]1 o; W* Y
    #define TRIPLE_PWM_FREQUENCY     (* ( volatile uint16*)0x5000340E)& f1 ]1 [+ X" A' r
    #define TRIPLE_PWM_CTRL_REG       (* ( volatile uint16*)0x50003410)  V( D+ w5 U9 a! V+ S1 b7 o
    启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;* [3 l2 B! b5 L2 q7 y5 J4 `
    定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
& Z  l0 P( u/ o$ R+ a    设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;3 E8 V8 s* `9 G4 b4 B# g
    开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);6 I5 |( k! t- P- z, D
    启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);
/ Y1 t* r: o% T8 V8 K8 J/ p" x# |" _6 h! W; O

& Q# @; v( [& i; g
/ O) U9 ^" j1 ?, B3 P, a    第三节 定时器实验
3 Z& X" U3 w( H
" q0 n0 z" ^5 w! e" k! ]    实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
  s6 }4 t6 I. D% F. I$ r    使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:& @; `! t2 [  N! l' G
    (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:1 j$ ]+ |- R- l7 [% A# I

5 ]5 _, e7 T' K2 e: s) b1 |    
+ D+ T2 v3 V7 s& A    图12
; i( ?* q' c# A    (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:& J" f, ~* d+ d& `+ F: h9 J; l0 G
8 x- h  m7 L8 p0 N7 A9 {  p, C% x8 O
   : I+ R/ s) I. S0 n7 S. O" s& o- s
    图13: J1 I* V4 Z' M
    将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
& @0 n- q3 m* V( \5 k2 b    打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
$ O! h) b7 X$ A6 N7 m9 _9 a) i    ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:: P0 D9 {" T* [+ m  f. v

: r0 O  N& K4 N0 V" n    
! r( \/ E9 G# w    图14; f0 s" g- H2 Q3 S6 F8 e
    使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:
& E$ \& w" h7 ^$ }5 J8 p
2 \; N; k8 b# K7 u 4 z9 r; U) w+ E. G7 O
- E* P2 F5 X1 K, H  H  A
   
- I, y9 X  B1 s' p! \    图15
. a' w( S) Y  g  W9 A/ Y
: J0 h" m5 |9 O4 |$ z3 C$ m+ f( y  l3 f& v

, V4 r0 V4 P/ k% f) @* K! U- j1 {. l' ?) r/ I7 O) p+ `
    文件下载请点击: Timer教程.pdf (750.77 KB, 下载次数: 0) % `3 R) {# R& E  G4 W' q
" u+ n- Z0 c8 t5 \
1 o* e8 ~# h* ^: v" w6 p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 02:15 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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