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

基于STM32WL55中开启双核的使用经验分享

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。
# A/ O" D* `3 b& b, H8 O/ m; x
7 ?9 ]5 y1 Q9 Z
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。5 L& ~/ s9 U( V. q. y9 M; k- {# N
, ?, A6 C0 v3 q9 o6 i$ j" u; J" I0 W
微信图片_20240525151256.png . t" G& a; R" L  {8 G2 }
+ m' g: E8 T. }$ ?' v* `" T
它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
5 w" _$ g# O% ]' G5 ^* f0 r& Y4 y
1 w# D* p. J3 o  O6 p
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。* }' @3 q* Z; l( G. |
: |9 O7 w4 \; x$ d- k5 |
微信图片_20240525151253.png
. Q8 |" l( H8 ?1 \( u( j

, N$ s: D) O" p# ^8 z我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。
- Z  A- ]- V5 C
2 E- d: z6 `/ `( g6 I4 Y
微信图片_20240525151251.png
: J6 w$ a9 b/ a9 i: O; h! S5 K
$ N8 S8 m& _; M$ }, m- n 微信图片_20240525151241.png
2 X2 d4 Y! l1 ~

* X. n" }0 z5 y0 o我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。
3 Q& _9 s7 Y) o! s5 D- G9 Y) |0 ^; D% y* |( L, Q
创建任务的时候可以选择单核或者多核。1 i/ [. [: E; i
9 m/ `* H: D8 ^# f# ]
微信图片_20240525151238.png
( E( j8 f. @( b. O  {
, m% h- q. h: N& S  Q如官网的介绍,每个CPU享有单独的时钟域和外设。9 ]3 [( W( g  v- c8 z
% `7 |- N, {, A1 X: @7 Q3 E
微信图片_20240525151235.png
: ^8 G$ A( H! q+ h1 g

/ K! P3 G  {7 g8 y: h从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。
5 z+ K& z2 ^2 {1 |
( g1 x) E% p1 k0 z  S3 p1 S 微信图片_20240525151232.png / e8 f7 q2 U! N' F; ?4 c; ]

  o! B* [& i2 `3 }5 O将LED的三个IO初始化。' c7 q( ]0 G6 y, t1 ?. A! K9 E
4 `  {- P* n+ K( y
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。
8 G' [% J% |' P+ [! G
' @1 ]; ^( v) j' ]4 d  z6 F 微信图片_20240525151229.png
6 m3 K' a" U3 ~

# _7 k$ t" a, @4 MIPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。- Q; O: }8 D, B6 H7 X

/ _! T* E* t, J9 H! |& J

( ?' f$ [8 u7 T6 [IPCC允许主核和副核之间进行通信和数据交换。
: t# S4 `8 h0 o, K0 V4 H
1 R/ @  P2 F+ }: c: k# @( j* O0 h6 z
5 |4 w8 J7 u( r0 y4 q! i, h
微信图片_20240525151226.png
4 l7 H5 `0 R2 [

9 C- {9 ~8 x  L1 [& g2 w7 v创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。% }4 G5 ~8 a- h0 `8 O6 ?

- _. v7 _& p- O/ R  T, ~; P& n
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。7 C) R1 }; ]+ E
% ?. V/ ^' ^. y1 v  C' Z
我们在两个工程的main函数中分别添加LED的代码。
# I* k/ L* B# [* C( u) b- P
  1. while (1)
    - |% ~6 m2 V2 d4 ]
  2.   {, W+ @! l9 A9 d) s% m, `, D+ N, e  m
  3.     /* USER CODE END WHILE */
    ; p1 p" h9 C5 x; t

  4. 3 ?0 D8 s# U5 g' P
  5.     /* USER CODE BEGIN 3 */4 a# y* B, b+ s' I- Z
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);3 E. \$ i! B, T8 l. m* [6 X, j
  7.     HAL_Delay(500);, J- g" ~0 c4 ~6 T0 d: ~- c# B  y
  8.   }
复制代码

, l0 M% L9 `; K, ?在第二个核的main函数中也添加LED的代码。
1 Y# K: d! C8 v) y) u
  1. while (1)
    ' V$ b$ `0 H5 @: T' _0 @- |) z
  2.   {" C" k+ _) Q; q: g
  3.     /* USER CODE END WHILE */1 W. I' @5 e+ q. Q. c. C2 I

  4. 7 G$ {' F! U# D) f
  5.     /* USER CODE BEGIN 3 */" s2 d) h1 p- {: Q
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    0 |1 X$ z0 Y5 f6 }( k" }9 ]4 R: X! x" @
  7.     HAL_Delay(500);9 u' E- G( H, D7 t. X) W
  8.   }
复制代码
8 B( \# X7 t6 K+ z: k& I
4 N; l- [/ l8 ~. _; `) Y" l6 v) U

1 f9 B( i- I5 ^& z8 T& \- g" t转载自 :电路小白
0 n2 r$ u6 i2 _) i如有侵权请联系删除1 K9 q) h. A5 J' z6 N

+ Z4 G# Q  X' {9 w# z( m0 k+ r) M; u1 H1 m$ U$ N) l9 ]

6 i1 X4 o, |2 {+ R& S# U
收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版