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

基于stm32 mcu的简介经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-10 18:12
  1.1 stm32 mcu结构
4 X4 @, s& r+ p2 J/ e. q% h由控制单元、从属单元和总线矩阵三大部分组成,控制单元和从属单元通过总线矩阵相连接0 P) G+ N9 ]. i$ B
控制单元包括Cortex-M3内核和两个DMA控制器(DMA1和DMA2)
' |/ p9 H2 b# x/ R从属单元包括存储器(Flash和SRAM等)和设备(连接片外设备的接口和片内设备)
9 p2 ^( Y9 V9 |( h7 r& r连接片外设备的接口有并行接口和串行接口,并行接口即通用IO接口GPIO,串行接口有 USART、SPI、I2C、USB和CAN等& x- Q0 b9 J% S& b
片内设备有定时器TIM、模数转换器ADC和数模转换器DAC等: m. S  ?0 T' S' A5 ]6 i4 J

0 f2 N' Z: p  O% m' X# A
20190227211620148.png
, ?, T; x7 b4 g& j& ~; b
& f. ^5 G# M4 R* b% L* y
  1.2 STM32 MCU存储器映像4 _( R# F" u1 ^1 d1 a: F
程序存储器、数据存储器和输入输出端口寄存器被组织在同一个4GB的线性地址空间内  U1 S; ]# Y" P
7 B% @9 S: \" o8 k
LT4RHJB[MEOI0O400NU{R.png 3 ~# {3 B! v+ X% A: q- ]

! A, l' d. [' i6 N! k9 u+ y
6 w, f3 [8 U' p& h1.3 STM32 MCU系统时钟树( A; ?7 y: y1 t
系统时钟树由系统时钟源、系统时钟和设备时钟等部分组成- d5 F3 q! z; M8 T
系统时钟源有4个:高速外部时钟HSE、低速外部时钟LSE、高速内部时钟HSI和低速内部时钟LSI* z* q  w( q0 W4 t8 y" o% O
外部时钟用OSC实现,内部时钟用RC实现
# X/ s" c) }& r3 k: a2 i. z2 i" [8 o: v
20190227211808950.png " o7 e9 _7 @: ^& \
) M1 u" [! `* t2 w. f$ ^
系统时钟SYSCLK可以是HSE或HSI,也可以是HSE或HSI通过锁相环倍频后的锁相环时钟PLLCLK4 l1 _3 ?& A0 x% _
SYSCLK经AHB预分频器分频后得到AHB总线时钟HCLK,HCLK经APB1/APB2预分频器分频后得到APB1/APB2总线时钟PCLK1和PCLK2
5 o; M7 m+ m) c/ q8 k
系统时钟树中的时钟选择、预分频值和外设时钟使能等都可以通过对复位和时钟控制(RCC)寄存器编程实现8 @2 q2 m3 M/ R

' ]% G7 O9 y8 _% A1 Y' B; q! G* T
SC`(PWZ4ZFM@ZN6WFL1KMBU.png : \! V  {, p4 E/ d
3 @7 ?. z8 @- H0 R
  APB2设备时钟使能寄存器(RCC_APB2ENR)
) ]7 |% F3 R6 ^4 j) k4 ]
0 i- p3 W! j8 _1 L" q' i
8L]T3[U0_SU)P_CGRIBTT`H.png % s* ?# f# {1 C  b

+ @3 O0 |9 ~" H: c& h1.4 Cortex-M3简介6 W% p# U9 ]3 F; D* C) |( n  ^
Cortex-M3是采用哈佛结构的32位处理器内核,拥有独立的指令总线和数据总线,两者共享同一个4GB存储空间3 n1 x9 P+ H' B- z' {1 m
Cortex-M3内建一个嵌套向量中断控制器(NVIC:Nested Vectored Interrupt Controller),支持可嵌套中断、向量中断和动态优先级等! j+ G* y$ `! k; b3 A5 z
$ I7 G6 }$ n! \+ J- P8 ?) r/ m/ R
20190227211856364.png 1 n7 |# J4 l' x; N
$ k7 Y# f( ]. q7 p% P& V
Cortex-M3内部还包含一个系统滴答定时器SysTick1 \+ @9 @' O* e" I, s
SYSTick的核心是1个24位递减计数器,使用时根据需要设置初值,启动后在系统时钟的作用下递减,减到0时置技术标志位并重装初值
# F7 J9 S+ Z0 ?' h4 M! A系统可以查询计数标志位,也可以在中断允许时产生SYSTick中断* X) w; l7 k: `! _+ |
, s8 D" _8 J# n2 ~
0 u  U! h4 A7 F- \
SYSTick通过4个32位寄存器进行操作
8 N. P5 T9 a' P! m# a( ~ 0L[DCH`(O3SQUUZN8W}CIPM.png $ z0 U7 N0 f3 u( m  A7 q

9 q3 d) c3 X0 Q8 g( T# D7 `0 ]6 T! v9 o控制状态寄存器有3个控制位1个状态位
+ H8 T5 w# Z4 I5 o0 {( \1 [# j' y: `2 _# R) t( Z1 @1 y
4M1X)_77RMVPW~T[L~MINLO.png
8 i/ S, R8 p; w6 v* U
( w: d$ [& p/ e: E* uSYSTick等片内设备接口的编程操作方法有2种:4 i9 A  I3 H  @  H! {0 L
直接操作寄存器和使用库函数
; O: }7 s/ @0 ?- Z, K1 S& J+ i, c使用库函数和使用自定义结构操作寄存器本质相同
* o6 U8 d4 C0 k4 w7 j. }, L
' r7 n5 A, l& `( C( e& n5 F/ Z3 k: ~
和使用库函数相比,使用直接操作寄存器进行软件设计有下列优点:4 P) g/ I: w: [
(1)源程序简单,目标程序小。
2 t" c5 r7 h6 k
: u5 U( {" h0 X
(2)直接操作寄存器有利于对硬件的理解,比较适合电子、通信和自动化等相关专业的学生学习使用
$ f2 S" i; x: X" U* f
/ g" z* C0 T; t+ w& a+ @( F; A
直接操作寄存器的主要缺点是移植性差,而使用库函数移植性较好,比较合适计算机等相关专业的学生学习使用$ x9 V2 g3 w) B' d  H
嵌入式系统的C语言程序设计与一般的C语言程序设计基本相同,主要差别有2点:
$ Z% |# y& U, }6 v* U! T/ p(1)嵌入式系统的C语言程序设计主要使用寄存器操作,而寄存器操作和变量操作实质相同,寄存器的名称实质就是变量名称% a9 l! o, j5 b. A4 m7 ~
(2)寄存器操作中控制和状态寄存器的操作通常是位操作包括“位与&”、“位或|”和“位异或^”(注意“位与&”和“位或|”与“逻辑与&&”和“逻辑或||”的区别)使用位操作的主要目的是只对控制和状态寄存器的指定位进行操作,对其他位的值不产生影响
" w0 U% X; y4 B5 Y- D8 W6 w$ f————————————————7 v  F- v  ^' Y0 s& o7 Q+ ?) Q1 \- _
版权声明:_laiwenjie
5 u8 b$ v/ p' I8 h& i如有侵权请联系删除
& M8 s9 L" d0 \" b7 }# L9 P& a& \' Z( S+ D5 q
  S) W2 y( H( ^: Q: O

- I* O+ F# T$ s) P& C  N; X/ w4 \( ~
赞 收藏 评论0 发布时间:2023-5-10 18:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版