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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ARM功能手机
——疯壳·开发板系列
定时器实验教程   

* ~" 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

该用户从未签到

2#
发表于 2022-9-2 18:18 | 只看该作者
这个看起来使用liunx系统的,实训的时候用过觉得不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-26 23:34 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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