返回列表 发帖

[原创经验] 华邦w90x700系列计时器/看门狗控制器

[原创经验] 华邦w90x700系列计时器/看门狗控制器

1.1.6 Q5 \$ {; Z/ d
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
& a2 a( x9 ^. G7 T1 t$ a嵌入式开发联盟
. Q5 h+ m; Y0 n& M; x嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习一个普通的定时器控制器有以下几个特征:
/ J; W% P# W0 Q) Jl/ [: V, Z$ T! L+ o+ l- S- b- R4 c
AMBA APB接口兼容

5 e- s6 e  D! e' A$ J+ Q+ S& d2 a嵌入式开发联盟l嵌入式开发联盟0 j3 _+ ^: P! f6 r, R7 Z# j9 N
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

2 \* f4 M, q+ x- w$ @7 Fmcuos.coml
! H8 U1 X& E5 Mmcuos.com
对每个信道的独立时钟资源
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! L0 M# L+ q) O+ `- u3 x) }! K
l
( F1 Z1 y3 B& C/ o8 F: y+ E# s( C5 {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- B* Q3 m! P  m# u, \

! B$ s. I; v. ~- A! X! U, wmcuos.com定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
; D3 Q/ a& o4 \, z$ W
. p4 y# x6 u% S; o; j- 嵌入式底层驱动开发技术学习网站
% p6 G4 w! _/ |# Y
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& O: e# ]' j( F2 Z0 K% P; b" @' n

- I! q7 z, v5 ?% t& L$ U5 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 ' s' @, Y9 m0 k, N9 o/ Z
1.1.
; Z' E( U; e, k; ^8 d) n. ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
! w: {' r  ^; y& ]3 P1 _嵌入式开发联盟

Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) z3 L! ]6 s: K5 ]! A
Address
9 j6 L5 K, Z# U2 R% S* Nmcuos.com
R/W/C1 h6 }7 A. b& ]8 Z. W
Description嵌入式开发联盟; E0 _- R2 Y* K# \
Reset Value嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: ~) S* Q/ g# D' V
TCSR0mcuos.com# u3 }1 n& N" c
0xFFF8.1000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 R% L- [8 K5 [
R/W
  {' R$ ?2 }* b' }4 A' ]& d嵌入式开发联盟
Timer Control and Status Register 0
, v, x! s' l5 p) E0 t7 b( ymcuos.com
0x0000.0005- 嵌入式底层驱动开发技术学习网站8 c) ~: w. ~7 J
TCSR1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ M; E8 I2 c+ E* r* O" T
0xFFF8.1004
# b: Q0 a& J* W5 \5 f本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
R/W! h& i8 O# C6 P! Z  B- @/ z
Timer Control and Status Register 11 G6 T  ^8 y! V8 a, Y
0x0000.0005
3 r1 S5 G" g6 ]. i! Kmcuos.com
TICR0
' T4 G  P' z5 i+ k2 r* n7 B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.10088 X3 f2 X. P6 J3 r1 H% I0 j
R/W嵌入式开发联盟+ N+ U& g/ D( B$ I: b# B3 c
Timer Initial Control Register 0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ `8 E0 o3 \+ d6 g
0x0000.0000嵌入式开发联盟' `# t( _. |& J# x8 k
TICR1mcuos.com) w, o0 q$ b% z4 N
0xFFF8.100C嵌入式开发联盟- ^: K5 N1 R2 _2 ~
R/W
' C( i, }/ {- w
Timer Initial Control Register 1
6 x+ ^- [" b6 E& t
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 q2 X4 F# b1 ?9 M. b; }/ _* A
TDR0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" t# ?3 ?9 {! z3 \3 I6 x% i: z
0xFFF8.1010mcuos.com, U/ ?. g9 f; }/ G
Rmcuos.com; g; @: c- ~4 R. Y6 M
Timer Data Register 0mcuos.com1 c% q" @: n9 I# Z  h8 Y% y1 ^7 u
0x0000.0000: u& M% [5 J; t* z$ O% \4 e
TDR1
6 v: v5 \) x0 y1 O6 E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1014mcuos.com9 a! J3 ?4 [2 g: d0 G4 y
R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 q( E% M1 C6 u5 ?/ ?/ e; l
Timer Data Register 1
+ Z! T" Y% A/ Q1 M% V嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000嵌入式开发联盟6 D! Q% \5 ?2 g# f" d2 I) M
TISR
+ N9 ]4 X/ Z6 w+ _& Z% X+ D1 ?- 嵌入式底层驱动开发技术学习网站
0xFFF8.10180 c* }9 n+ f/ ~4 q2 b" y  i" \+ H
R/W
+ |( _' N5 i, ^* d# Z2 o嵌入式开发联盟
Timer Interrupt Status Register
* A  D+ T% k: c9 D; m, k  w& fmcuos.com
0x0000.0000- 嵌入式底层驱动开发技术学习网站* t# k7 ~% T7 B  B/ n
WTCR
2 d" o9 E' A4 y, bmcuos.com
0xFFF8.101C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 K) G9 x" o  D) v* x
R/W嵌入式开发联盟, d' S+ X. j" J$ Y& d3 K
Watchdog Timer Control Register- 嵌入式底层驱动开发技术学习网站& a" j6 \" d3 Z; G
0x0000.0000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 \" T8 h" p+ X3 a+ Z% D1 `


; P2 [8 B/ D7 N: N& e8 F! e1 [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 7 n9 p8 r9 R& x0 e1 {

6 p; ]1 E/ W" G3 S3 p# {% r嵌入式开发联盟嵌入式开发联盟$ ~( J# [1 n% c, {- S8 Q( [  g

- D3 f9 Y. a* o: A# y5 d- {1.2.
9 G; R- C1 Z8 b, ]
程序设计指南
1.2.1.
5 l& X( b$ @7 o1 L嵌入式开发联盟
普通定时器中断频率

" D- r# U/ h& Z2 a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。定时器中断的频率取决于以下等式:
2 K7 R5 q* \& X' P' T嵌入式开发联盟Freq. = Crystal clock / ((pre-scaler+1) * counter))
& a8 t% O+ r% {0 B6 G' c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 mcuos.com0 W- v% U" g) R+ J7 @- I& N
对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。5 `; [3 U3 L8 B* h, O' |" l
定时器参考设置值:mcuos.com3 @+ s# d: n: h5 O; O
Frequency (1/sec)7 b3 j! o6 l+ P0 B. N/ B
[Pre-Scalar]
( D) [+ F1 O, ]# K! `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
[Counter]  N) f0 G+ C0 P% A$ t" c
18
4 N' q2 d3 E) ]$ ]  N# vmcuos.com
0
  J8 N. c5 {8 G& w* Q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xCB735mcuos.com( k0 c5 S6 _9 i* p0 }* v+ y
40
0 M0 _% I( }. y* e- I& I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0
! a( L; x' X2 O- Q4 r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x5B8D8mcuos.com6 X. R' c# m3 n, E
100
! W9 O9 H9 k* r" z% L
0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; L) ~2 @) K+ I' j, S
0x249F0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 A) s' S' V, R6 {  ^  W

& k2 a2 s% T9 {4 ]- ^. M; X4 Y- 嵌入式底层驱动开发技术学习网站 mcuos.com9 V6 y: S" Q* \, Q: m9 ~
1.2.2.
% n% V! A4 X. D' W4 i
普通定时器初始化

8 Y" f1 s) ~: {6 v9 {% ^6 L8 Emcuos.com在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。- 嵌入式底层驱动开发技术学习网站, [2 d9 m6 H; b9 P" R
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

# l4 p/ Y$ v+ G2 D1 Y- 嵌入式底层驱动开发技术学习网站1.1.1.
' ]" i1 ^, C' Y: U9 Z
普通定时器中断服务流程
嵌入式开发联盟2 \, S2 D8 b% w4 H% s
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 _+ }4 d1 v- \4 f; c( X- ^

  q3 j5 N5 d6 o: N普通定时器中断服务流程
2 `3 A  U1 Y3 t嵌入式开发联盟嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  e, B1 G1 z% N' `! q7 J) J

8 J6 F  c( |- h5 h) d1 f% \  |# }. H- 嵌入式底层驱动开发技术学习网站1.1.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, K2 Y' s; k+ B1 Y6 L/ V" Q4 c7 L! Y
看门狗定时器控制

6 Y' x( T; x! c" vmcuos.com寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。mcuos.com$ `* l, B4 q+ `$ o  F
看门狗定时器重启时间(使用15MHz晶振); V- O2 B% K' R$ @7 k' f
WTIS[5:4]- 嵌入式底层驱动开发技术学习网站! @& y+ c- d; v  N+ U: @/ I5 H
Interrupt Time-out
2 k4 ?( @5 [. o- 嵌入式底层驱动开发技术学习网站
Reset Time-out本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, y7 @% s6 B  ~- F
Actual time WTCLK = 1
% c* e# e  Z- i2 m1 ~, |
Actual time WTCLK = 0
0 C5 t+ T0 L# E( s6 a4 `嵌入式开发联盟
005 l" x9 ~" P" a7 |. \* i. ]
214 clocks
- g6 h" v, t, j3 k
214 + 1024 clocks
' @+ j: m2 C: b1 Vmcuos.com
0.28 sec嵌入式开发联盟6 m3 G6 p! N$ i: r1 L4 f
1.1 msec
/ k; R; R( a# z# g: U' r嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
01
& x9 E" V  l8 b% l3 G* c- 嵌入式底层驱动开发技术学习网站
216 clocks
0 Q+ u( f( f9 E9 T. a0 o$ r
216 + 1024 clocks/ D. H. [. v$ V* N( F! |
1.12 secmcuos.com( J( ]7 R" J* S, n/ m
4.3 msec
4 T4 Q8 K" i/ t' W/ X0 y  S4 Z
10
7 h6 u  |8 f% B. l3 _mcuos.com
218 clocks- 嵌入式底层驱动开发技术学习网站: h7 r* i6 L; p. ~
218 + 1024 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) |- l( d5 d/ x) o; v2 B! H& d
4.47 sec
. @2 ~& ^3 _8 H2 ?- n嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
17 msec
  b! V" L- W' A9 S% z
11
6 ~7 S; k3 X3 N/ V/ fmcuos.com
220 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! A& D# V1 M  U
220 + 1024 clocks
' \& }. v/ n+ V0 Q5 D嵌入式开发联盟
17.9 sec
  Z- T0 {6 t$ t& T- 嵌入式底层驱动开发技术学习网站
70 msec5 q1 g, V- @) g" f

( P% @& Y( n; H" x$ Q" _- 嵌入式底层驱动开发技术学习网站1.1.2.嵌入式开发联盟( V3 u" Q/ T# r9 e6 |3 U& v* J
定时器控制的示例
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) G1 U4 K* e5 M6 J, t5 S2 n
1.1.2.1.
; u) B7 v- L8 M4 c% ?本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
! a, N) r! `$ e" C( d% X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 - 嵌入式底层驱动开发技术学习网站- Z' b/ {. ]- W( x
命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 E  }$ {1 d* Y( N' Q5 v  a. V3 V% P
1.mcuos.com+ c7 J7 |7 M% {% R% E# Y
0到寄存器TCSR
* t* s- C/ ]: _0 m3 J$ B2 e嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习来禁用定时器。

& J# d# S  X+ r4 ?4 O! Rmcuos.com2.嵌入式开发联盟3 R. g' M! H" v1 T. \1 n3 T$ `& H
0x249F0到寄存器TICRmcuos.com6 T& J: D+ T- ]! ]  j' l
来设置定时器初始化计数。
/ Y; ]& @. Y- `
3.
3 ~1 H' F! r, [) S5 H- 嵌入式底层驱动开发技术学习网站
0x01TCSR[28:27]来选择周期模式。
嵌入式开发联盟; q. C: u, \0 J9 X
4.
. V: [4 h0 I0 o5 E, Z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1Write 1 TCSR[30]TCSR[29]
. W- K6 b% G' @; u2 U; k; T嵌入式开发联盟来启动定时器计数器和定时器中断。
- 嵌入式底层驱动开发技术学习网站: M. g0 G, T0 S2 f* c0 U
5.
' q9 G/ q" j- m4 {! M2 Z- 嵌入式底层驱动开发技术学习网站
当定时器产生时,检查寄存器TISR- 嵌入式底层驱动开发技术学习网站0 p0 Y4 y+ _$ p0 c8 h: q
并写1来清空特定的定时器中断标记。

: Z1 x# r" S) R( s0 M- 嵌入式底层驱动开发技术学习网站
) Y. {' E- ~& K, O. C
. l: Y' v! @* J! D+ B& e本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- 嵌入式底层驱动开发技术学习网站9 T* C' ?7 D. ?2 s+ e

4 u5 l6 S' o: t- y7 q2 u- 嵌入式底层驱动开发技术学习网站1.1.2.2.; B6 U1 n5 O$ `/ l5 l
执行看门狗定时器重启功能

! u* c" k2 H  b" j. {6 c& D  Xmcuos.com 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; D; _+ g* A  \: L( A
重启间隔:0.28嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; p; a3 S+ P3 ^& M' Q$ n
嵌入式开发联盟& O" }& e3 ]/ G: x/ h6 g
命令:
! i% o1 ?4 q" [& x+ S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.
! |9 M8 u3 o3 m" k) G# d& J嵌入式开发联盟
1WTCR[0]
嵌入式开发联盟* l9 n3 I) d" V1 r& M' b0 @
2.
/ E, {$ _' w* J3 y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x4C3到寄存器WTCRmcuos.com2 U2 h& y& O8 C
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 x8 N" n8 \' u: z$ c# x
3.
! e& _/ ~, W# Z1 x2 x嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; h: }. V3 W7 i( m. M7 d' P1 }( b- {
mcuos.com. S& v+ {9 ~. u8 `8 e
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! x; I+ O* {+ _1 X: g+ W0 I; V( i
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服