你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32中用到的Cortex-M3寄存器说明

[复制链接]
得蜜 发布时间:2008-11-28 15:39
在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。
4 H- o% s4 H( T在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 8 T) k" B( V+ T2 O0 [7 H9 Z
 : ^* r: K! D  `
一、NVIC寄存器组
" {% ~1 I" ^) c3 ^STM32的固件库中有如下定义:
$ H( u* Y; E. b. a! G) l" ^9 b5 M+ mtypedef struct" v7 u1 Q. f* n" h3 ?
{& F: D+ X: ?7 }7 Q- B$ w3 h: M
vu32 ISER[2];8 _/ l2 I: b( T, A5 d& s
u32 RESERVED0[30];( X* `# _  P3 N4 s' n
vu32 ICER[2];
, c5 }4 N+ q4 T+ b6 n+ T2 cu32 RSERVED1[30];# n# R/ b. g- c  H9 ?
vu32 ISPR[2];1 z! L' |/ ?% E$ y& B
u32 RESERVED2[30];! }' n& _" ~+ h3 s1 T
vu32 ICPR[2];
  ~: j& g9 ?9 W+ Z! Z- O$ cu32 RESERVED3[30];4 f1 ^: y* e! E& }! U( T: K4 l+ B8 V
vu32 IABR[2];9 |4 g' {% `. f+ @
u32 RESERVED4[62];
: q# Q: a5 A# f$ E, Dvu32 IPR[11];  x7 G7 s4 A- N  u: q" o# d# y
} NVIC_TypeDef;
# G, ?+ L0 t6 g+ @
它们对应ARM手册中的名称为
; `+ @6 q! p# U' @) `ISER = Interrupt Set-Enable Registers
5 J; [5 W; R: J. q8 A( EICER = Interrupt Clear-Enable Registers  v* R7 H+ W3 s
ISPR = Interrupt Set-Pending Register
% {0 c, l, f* S2 b' dICPR = Interrupt Clear-Pending Register. `& Z# p+ ?% O! h1 ?2 K+ I5 N
IABR = Active Bit Register" w: d7 c0 U2 P" E' y4 X
IPR = Interrupt Priority Registers

6 ^  |; @4 Z: o  Q每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 - K* G7 Q/ v0 {
参考STM32技术参考手册中的中断向量表,中断源的位置为:8 a8 S: H4 M# X# Y" u9 b' c
位置0 - WWDG = Window Watchdog interrupt
( @7 r& z/ d' w- d' i+ P8 [: g位置1 - PVD = PVD through EXTI Line detection interrupt: Y: l& I) ^7 i! I$ u9 o
位置2 - TAMPER = Tamper interrupt
4 X. h4 ^" A4 a  \; w# P( p  j; j......
" i* q, k! S5 R  I1 W. w3 i3 |$ p: P位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt
# M1 @, {& `) f, N# T; R位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts

; ^& \5 U1 s8 y6 | 
* }- A+ |- Y# q2 ?二、系统控制寄存器组
7 k6 F/ P& G( _3 Y4 G- y+ oSTM32的固件库中有如下定义:
. a/ v$ k) `* R8 @typedef struct3 A9 r3 F' z, V! @- d7 c3 N
{
5 v. |# g- g+ W/ V; l5 [vuc32 CPUID;; u  S1 s% \9 ~% A, t
vu32 ICSR;/ }) Z& G" Y: V$ D3 a7 y
vu32 VTOR;" u' _! F  m4 r1 ~  p5 r  U9 S+ h
vu32 AIRCR;
' N7 D% e6 d0 R3 [) {6 N  f% W+ mvu32 SCR;; u& l0 g/ ]3 J) S* ~% J1 d
vu32 CCR;4 [5 t2 l, V1 v" e8 r
vu32 SHPR[3];
3 h' Y7 {" w; }7 @( Jvu32 SHCSR;% Z7 a& a2 G" ~" m( e
vu32 CFSR;( N) @5 |4 f) u# J2 p
vu32 HFSR;
/ r6 g! Y3 e: X$ s3 F. \. F, Z6 {vu32 DFSR;' D1 [2 W" P) e7 e, [
vu32 MMFAR;4 O: e3 O! h" B8 T  ?# g
vu32 BFAR;& R4 ]- h% `0 [, Y& r5 a$ a
vu32 AFSR;7 s  c, f. i$ c$ u" \; ^* O
} SCB_TypeDef; /* System Control Block Structure */

: p, t, d- @3 c2 k( `  h% C, u% M它们对应ARM手册中的名称为
" h9 q; J0 Y- o0 I- gCPUID = CPUID Base Register4 F5 b5 }/ m3 N- `
ICSR = Interrupt Control State Register
- m9 Q1 H: a# I5 zVTOR = Vector Table Offset Register( B5 M) u3 ]4 r: D
AIRCR = Application Interrupt/Reset Control Register
" {5 U, Y' l- D# lSCR = System Control Register
( s( u1 P' c9 M  K8 g% HCCR = Configuration Control Register
- e+ P6 a$ t7 ]) U& A) R5 Z2 OSHPR = System Handlers Priority Register
. l# l" X& p, oSHCSR = System Handler Control and State Register
6 X7 d2 z* ^$ G+ cCFSR = Configurable Fault Status Registers2 I, G  u1 x* U- V
HFSR = Hard Fault Status Register
8 c, F% u1 a- n7 |DFSR = Debug Fault Status Register- c# u. X: D# T. d! @/ T4 v- Z
MMFAR = Mem Manage Address Register
+ D1 w) u7 t1 Q2 d% ^3 |5 rBFAR = Bus Fault Address Register
4 G3 c! o6 [' [9 |$ l5 ^AFSR = Auxiliary Fault Status Register

$ n# H1 A1 k4 h+ R5 P& _% l * Y: u7 E( u( `% A1 Z/ e
三、系统时钟寄存器组
2 ?: m1 k% Y  G( C) OSTM32的固件库中有如下定义: 2 B* W3 W7 `) n. ^1 l$ ?
typedef struct
0 Z5 ], P' C# ~1 b- ^+ K  _9 @; F- p0 L  L{! i) K7 a' @. C" S
vu32 CTRL;7 F9 r' b0 c% C
vu32 LOAD;2 K% A/ N: P) E4 T; D& Q
vu32 VAL;
4 ]2 c' u, h* H6 d, k) Xvuc32 CALIB;7 B5 g! W. F- X2 K# A
} SysTick_TypeDef;

0 q/ b, `6 I6 x2 l* H  u它们对应ARM手册中的名称为 2 `1 [# Y) V, k. X. n
CTRL = SysTick Control and Status Register
+ `6 O, f  `. o9 X6 T4 O6 ?9 x# [* mLOAD = SysTick Reload Value Register$ ?" S; U6 D4 y$ a/ m; ~# y. K
VAL = SysTick Current Value Register4 l8 S8 [% V# q8 ^) Y7 O+ [4 a
CALIB = SysTick Calibration Value Register

2 {" ~" a& k5 Z5 K; u5 N( v! R# C; P6 R3 G9 m. B

) T7 Z  a2 w6 T( V& r6 Z" v* x( t
收藏 评论8 发布时间:2008-11-28 15:39

举报

8个回答
a1z26 回答时间:2008-12-3 12:00:17

RE:STM32中用到的Cortex-M3寄存器说明

人气不高啊,得顶起来。
得蜜 回答时间:2008-12-3 16:08:53

RE:STM32中用到的Cortex-M3寄存器说明

嗯,谢谢。
c51avr 回答时间:2008-12-5 11:13:19

RE:STM32中用到的Cortex-M3寄存器说明

强烈建议得蜜版主公开靓照以增加论坛人气!
ibq3100 回答时间:2008-12-7 22:45:21

RE:STM32中用到的Cortex-M3寄存器说明

还是说得不够详细。凑够字
cole3 回答时间:2009-6-28 13:44:01

RE:STM32中用到的Cortex-M3寄存器说明

sqlwindspeaker 回答时间:2009-7-8 19:02:12

回复:STM32中用到的Cortex-M3寄存器说明

太赞了。。。不用说的足够太详细,指明到哪里去参考就可以了~ 谢谢
sqlwindspeaker 回答时间:2009-7-8 20:11:52

回复:STM32中用到的Cortex-M3寄存器说明

太赞了。。。不用说的足够太详细,指明到哪里去参考就可以了~ 谢谢
kevinsmith-4832 回答时间:2009-7-24 11:35:27

RE:STM32中用到的Cortex-M3寄存器说明

顶起来,我觉得对寄存器操作,很繁的, 我一般喜欢用库函数来实现.呵呵

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版