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

基于stm32 mcu的简介经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-10 18:12
  1.1 stm32 mcu结构
2 [% J  W/ @) z7 m由控制单元、从属单元和总线矩阵三大部分组成,控制单元和从属单元通过总线矩阵相连接
" m& M  h! h6 L# n* z6 o) d控制单元包括Cortex-M3内核和两个DMA控制器(DMA1和DMA2)  H+ z$ Z+ X6 Z1 P0 j0 U, H+ A
从属单元包括存储器(Flash和SRAM等)和设备(连接片外设备的接口和片内设备)4 M6 l2 M+ J; k5 c5 ]# c" V
连接片外设备的接口有并行接口和串行接口,并行接口即通用IO接口GPIO,串行接口有 USART、SPI、I2C、USB和CAN等
7 @- E7 k/ b! B( a% `片内设备有定时器TIM、模数转换器ADC和数模转换器DAC等6 O: k! U" s- f- S

1 b' i* R* r6 A; ~
20190227211620148.png ( ~, |, L& R% g: m5 ^5 p
9 ]8 m9 q# ^5 q. H" I( U* A+ v/ z
  1.2 STM32 MCU存储器映像# i/ `8 ^. e& Z( K) {
程序存储器、数据存储器和输入输出端口寄存器被组织在同一个4GB的线性地址空间内
+ t5 l9 D: w3 @
7 d' {: h  _2 r9 _+ c; z& t" p
LT4RHJB[MEOI0O400NU{R.png 4 F+ e9 F+ G( o; z" ?7 t7 F
- Z# g/ }. c# v, _* V5 E2 \5 R' b) H
$ z2 l" l" S; ^- O& f: C
1.3 STM32 MCU系统时钟树$ x1 F# U4 B1 `6 Q" y: u, u9 H
系统时钟树由系统时钟源、系统时钟和设备时钟等部分组成; B, _9 c' o  F) l
系统时钟源有4个:高速外部时钟HSE、低速外部时钟LSE、高速内部时钟HSI和低速内部时钟LSI1 Y) w" ]. a7 N. S: S+ F
外部时钟用OSC实现,内部时钟用RC实现
, D/ X) E0 E' ^" j6 G' @& c$ U: w$ D% E4 O) r% O7 v9 ?
20190227211808950.png
6 v% C; S0 J- s! h7 T) W% [; u0 M' y& V/ L% L' ^
系统时钟SYSCLK可以是HSE或HSI,也可以是HSE或HSI通过锁相环倍频后的锁相环时钟PLLCLK# Y& Y& _* W8 Y+ o9 T! s; j6 j' S
SYSCLK经AHB预分频器分频后得到AHB总线时钟HCLK,HCLK经APB1/APB2预分频器分频后得到APB1/APB2总线时钟PCLK1和PCLK2
- o$ R. K+ a  a
系统时钟树中的时钟选择、预分频值和外设时钟使能等都可以通过对复位和时钟控制(RCC)寄存器编程实现
: d& W3 l9 Q/ `! w3 \8 C" Q! I" }
( ]( f  e3 K8 m" e
SC`(PWZ4ZFM@ZN6WFL1KMBU.png & ?8 y8 u4 m* y& m3 d1 k
, }6 g3 ?4 \+ c
  APB2设备时钟使能寄存器(RCC_APB2ENR): T0 g4 j/ t, V- Y7 n6 s' o0 F. T& m

  c. V* N0 G/ D
8L]T3[U0_SU)P_CGRIBTT`H.png / ]- Z* v% X2 Z
( X' |5 z* L0 J; G0 h
1.4 Cortex-M3简介
' ~, y) t, R( T: b: F8 Z) O7 X( MCortex-M3是采用哈佛结构的32位处理器内核,拥有独立的指令总线和数据总线,两者共享同一个4GB存储空间/ f) N% F/ R( v  B
Cortex-M3内建一个嵌套向量中断控制器(NVIC:Nested Vectored Interrupt Controller),支持可嵌套中断、向量中断和动态优先级等
1 c. k' E5 n3 k% k3 \% F" Y# S4 b
# Q7 o' M% ]$ `6 Z) j5 Q( V- n
20190227211856364.png
$ }5 x/ l, w- [+ b0 p9 _; q: `- s& `  a1 W- \
Cortex-M3内部还包含一个系统滴答定时器SysTick
, W! P6 n/ D5 L/ Z! USYSTick的核心是1个24位递减计数器,使用时根据需要设置初值,启动后在系统时钟的作用下递减,减到0时置技术标志位并重装初值- V' c$ o* n# b
系统可以查询计数标志位,也可以在中断允许时产生SYSTick中断  X. _6 W, i$ N# `3 z. y' }/ i
. P3 Q& g& j6 N) }# z& G

* V5 T: K; X5 C3 d+ _SYSTick通过4个32位寄存器进行操作/ O# d$ U: m# N/ z
0L[DCH`(O3SQUUZN8W}CIPM.png , G" H+ d' V6 n0 O
& a4 N8 c  C- C( S+ G- J
控制状态寄存器有3个控制位1个状态位# W' x- E% |0 O+ d
* I+ y5 x* }) ]# K7 F
4M1X)_77RMVPW~T[L~MINLO.png " H3 o& z5 O9 Y9 w; z, j6 ~3 f" E/ z
8 C* a) M: M' W1 Q
SYSTick等片内设备接口的编程操作方法有2种:
) ?  q. Z) ~, v. m7 L3 w  a直接操作寄存器和使用库函数; Q' n5 ^  e+ ?* L+ |
使用库函数和使用自定义结构操作寄存器本质相同
; Y9 m" A2 i( R+ e( x' h; N7 F8 I. n
: x+ o% @" l: f, C
和使用库函数相比,使用直接操作寄存器进行软件设计有下列优点:) l, N) \, ~3 M7 ~8 j
(1)源程序简单,目标程序小。* J: F$ a. w7 f
9 E: v% I: @" M  c
(2)直接操作寄存器有利于对硬件的理解,比较适合电子、通信和自动化等相关专业的学生学习使用
3 _+ e3 C" D4 {/ n" f/ U6 {1 T

% n9 U3 r: E3 h! t. g直接操作寄存器的主要缺点是移植性差,而使用库函数移植性较好,比较合适计算机等相关专业的学生学习使用& w3 M: S0 i! A! S
嵌入式系统的C语言程序设计与一般的C语言程序设计基本相同,主要差别有2点:
$ ?4 f/ ^7 m( X0 j6 c' ]" d(1)嵌入式系统的C语言程序设计主要使用寄存器操作,而寄存器操作和变量操作实质相同,寄存器的名称实质就是变量名称
! E% ~" U8 |, M" D(2)寄存器操作中控制和状态寄存器的操作通常是位操作包括“位与&”、“位或|”和“位异或^”(注意“位与&”和“位或|”与“逻辑与&&”和“逻辑或||”的区别)使用位操作的主要目的是只对控制和状态寄存器的指定位进行操作,对其他位的值不产生影响9 C# c1 l6 G6 ^. f
————————————————
6 ^  Q. f& W% W版权声明:_laiwenjie
7 N- M! s. `2 ^; ?$ N1 P如有侵权请联系删除
% O1 x9 m, G$ p" I8 H  w0 S. m2 ]; J, Z2 O% |) D
5 F% F- }/ u1 P4 s8 S
( y) q2 _, Y* Q9 Q9 N
收藏 评论0 发布时间:2023-5-10 18:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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