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

基于stm32 mcu的简介经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-10 18:12
  1.1 stm32 mcu结构
' U% y& ]: i( t/ `由控制单元、从属单元和总线矩阵三大部分组成,控制单元和从属单元通过总线矩阵相连接
9 i9 w! |. z' u/ C/ D- Q9 ~控制单元包括Cortex-M3内核和两个DMA控制器(DMA1和DMA2)# ?/ e% E1 s  Q! x
从属单元包括存储器(Flash和SRAM等)和设备(连接片外设备的接口和片内设备)
5 G' ]: b9 e7 b8 B( f6 z连接片外设备的接口有并行接口和串行接口,并行接口即通用IO接口GPIO,串行接口有 USART、SPI、I2C、USB和CAN等
9 c1 f: M& E- U8 u- _8 S片内设备有定时器TIM、模数转换器ADC和数模转换器DAC等9 i/ K9 w) _+ {& y3 j6 ?8 [

& a% G& |+ Y7 O% g4 _* k
20190227211620148.png
- l: [& B4 j. h1 g: y% V3 F4 Q! [3 n4 n
# E0 T# g  {! \/ h
  1.2 STM32 MCU存储器映像# s/ v. K7 t* a! }- v2 R% h
程序存储器、数据存储器和输入输出端口寄存器被组织在同一个4GB的线性地址空间内% \% [  L, @) [2 K0 B5 {
9 W$ x% s4 i' f& L  K
LT4RHJB[MEOI0O400NU{R.png 7 p) d: k4 C0 s6 F- c& o3 ]8 D
- f8 O- Q& S& I. e* M1 s( Q

4 w6 S0 c$ r0 @* o1 a) ~$ ]1.3 STM32 MCU系统时钟树. z. e( c# ?- Q+ i9 C! G
系统时钟树由系统时钟源、系统时钟和设备时钟等部分组成: y# h- ^( b( ?
系统时钟源有4个:高速外部时钟HSE、低速外部时钟LSE、高速内部时钟HSI和低速内部时钟LSI
4 m. ~3 v& F$ s' ], r) _4 r# F外部时钟用OSC实现,内部时钟用RC实现/ X& U+ J6 m' [2 b; f; Z* B

6 h7 U9 x. T; A
20190227211808950.png
. }' W, L) V/ r. c- @
2 H+ y  h+ D) W- w系统时钟SYSCLK可以是HSE或HSI,也可以是HSE或HSI通过锁相环倍频后的锁相环时钟PLLCLK
* \$ ~- ]' M$ TSYSCLK经AHB预分频器分频后得到AHB总线时钟HCLK,HCLK经APB1/APB2预分频器分频后得到APB1/APB2总线时钟PCLK1和PCLK2
. ^2 B/ S9 V/ Z5 e. V
系统时钟树中的时钟选择、预分频值和外设时钟使能等都可以通过对复位和时钟控制(RCC)寄存器编程实现
6 H: X1 I$ Z) r! F! V& a4 e
& \2 a' K9 ?$ ^2 y+ [
SC`(PWZ4ZFM@ZN6WFL1KMBU.png
4 b+ l7 w* T5 z, _4 |' ?9 B$ L. ~2 m4 K( p9 J  u% c" u" B
  APB2设备时钟使能寄存器(RCC_APB2ENR)* L2 h6 I" G; P* c* `  y
8 }) U8 z8 G/ i
8L]T3[U0_SU)P_CGRIBTT`H.png
3 j, M0 Y8 p$ t0 k" ^/ |. s

+ l$ |% x$ D' N0 E" G1.4 Cortex-M3简介
/ B$ Z& ]) I% e+ Z& k' O, \Cortex-M3是采用哈佛结构的32位处理器内核,拥有独立的指令总线和数据总线,两者共享同一个4GB存储空间
+ q+ O7 T- e# m/ \  X. ?Cortex-M3内建一个嵌套向量中断控制器(NVIC:Nested Vectored Interrupt Controller),支持可嵌套中断、向量中断和动态优先级等* f$ d1 x6 [4 Q' x- h" Z

" @# k/ j8 B& o% ^& [3 N
20190227211856364.png
/ Q0 N! P3 O' @! ]/ z) l  j6 ~. u; [6 |2 }: V
Cortex-M3内部还包含一个系统滴答定时器SysTick* A" ?& P; `, q& q- O  x! ^
SYSTick的核心是1个24位递减计数器,使用时根据需要设置初值,启动后在系统时钟的作用下递减,减到0时置技术标志位并重装初值+ }5 x) V3 n3 @7 F7 I2 L" A
系统可以查询计数标志位,也可以在中断允许时产生SYSTick中断
; T  @1 c/ z$ r4 f+ X6 ^* X
0 r$ p0 P9 E; Z
; X& P6 ]% m# C9 u0 t' r
SYSTick通过4个32位寄存器进行操作, E% a2 y+ g4 @- k/ v% L* z
0L[DCH`(O3SQUUZN8W}CIPM.png 0 h) q* J, h  H4 X5 p$ {9 ?
- m% V/ Z6 j4 v  h
控制状态寄存器有3个控制位1个状态位
# k& ^+ ]8 t. s; O/ w, P& [% F
" T" O) A( K' ]: B# m# e
4M1X)_77RMVPW~T[L~MINLO.png / Z1 e! l/ M2 S6 h! G

/ Q: U1 x7 Y- s% m& qSYSTick等片内设备接口的编程操作方法有2种:* S( |4 z; h, Z
直接操作寄存器和使用库函数+ `' I+ G7 n, s! ]5 G$ X
使用库函数和使用自定义结构操作寄存器本质相同  d5 V% {' M; e( b
* _* N4 I7 R. D9 s: T. d) t
和使用库函数相比,使用直接操作寄存器进行软件设计有下列优点:, c# M  V* k1 V, O4 b; s* {) x
(1)源程序简单,目标程序小。: ?2 g( k  g  {+ ~9 J3 b
& \7 m( w, w) i  |+ a
(2)直接操作寄存器有利于对硬件的理解,比较适合电子、通信和自动化等相关专业的学生学习使用( Q! W4 Z- M3 p) u) E$ F5 a/ t

8 z' g8 H7 {$ D0 H2 G2 z直接操作寄存器的主要缺点是移植性差,而使用库函数移植性较好,比较合适计算机等相关专业的学生学习使用
& I: r) ~0 {/ \( X4 W  g) [嵌入式系统的C语言程序设计与一般的C语言程序设计基本相同,主要差别有2点:
7 F$ u5 W4 R4 r, @3 n- h7 w(1)嵌入式系统的C语言程序设计主要使用寄存器操作,而寄存器操作和变量操作实质相同,寄存器的名称实质就是变量名称
2 ]2 ]6 K" A: `(2)寄存器操作中控制和状态寄存器的操作通常是位操作包括“位与&”、“位或|”和“位异或^”(注意“位与&”和“位或|”与“逻辑与&&”和“逻辑或||”的区别)使用位操作的主要目的是只对控制和状态寄存器的指定位进行操作,对其他位的值不产生影响" w4 E! j& y; k" i
————————————————
( j; f2 I/ F0 V版权声明:_laiwenjie
. y, @( ^7 Z2 g/ S8 c如有侵权请联系删除
# K5 J! q" D- c' {) x: M. m6 c) c+ e( l+ D: M3 n. `: A% G$ I$ X
$ d' j% Y3 j3 F! x5 f* z2 A

& k* q1 W" r& B% j, i6 d+ `
收藏 评论0 发布时间:2023-5-10 18:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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