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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。
8 l4 t/ M1 m. G$ t# H5 J# l) f* R- K
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。
% K: Y, P6 H5 A7 I0 {/ y5 C: x9 n8 v* \. [$ b
微信图片_20240525151256.png
% P8 ?8 k$ o+ f5 H
8 x2 `2 L& P) O1 H( x( h它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
0 u8 s& D4 S/ K# S+ e9 l% j) ]- d5 A, p2 @3 ~
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。
1 p6 f1 {" B6 o9 G  s* ^
' s6 \* J. y) C! S( u: Q 微信图片_20240525151253.png # m# w; a/ p. y& j5 ^& K* J
4 y( A% g6 k$ F5 |0 n: z
我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。
& U% Q( |# n. y8 Z' j
  a2 v3 A  g& L% I' w
微信图片_20240525151251.png
+ J0 y9 S4 C; s3 B9 I4 u8 i$ }6 E; u  [# X! \
微信图片_20240525151241.png ( I$ B8 d4 J8 U+ r+ _& E; |; \
1 X; _1 \& v# l' c
我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。% {- a: l( Q" N, f  S

# S& r! v  F: P. @% g4 m
创建任务的时候可以选择单核或者多核。0 n' v: h" L- a3 H5 Y
' e7 R1 d7 y6 U7 Y4 J
微信图片_20240525151238.png
- t7 S. F" s5 z# H
% J" M$ p6 @# ]. O! ?% Z如官网的介绍,每个CPU享有单独的时钟域和外设。
6 D9 q/ z- n, r8 c- x6 o# Z7 a+ X& d+ x5 A) v$ @- `$ N
微信图片_20240525151235.png
0 `6 t8 N4 j0 V  O

5 V! Q+ U# b6 u0 s1 n从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。
% Z5 O: [# ]" Z) W* B6 y9 N( p; @2 w" y' W. c3 _
微信图片_20240525151232.png 6 T/ b$ [) e6 g- p* T" }0 I
) p9 x2 A+ q! J$ A/ }4 c
将LED的三个IO初始化。& p4 E0 P/ U8 ^7 Y2 K/ |! K, l

( _; g9 K2 d6 d' H9 O0 p
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。
" K5 Y0 S) N* @- {; O( W! u
3 W& U6 N7 i5 d: ^2 Q. x' D! h 微信图片_20240525151229.png 8 j$ v( W7 D" {. V& o: R- |
; _, K0 ?# b0 |( n4 O: S
IPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。" P: b) k3 t5 x

7 n, o" e! K+ [# }0 I/ Y( U

4 m7 k+ g) ^1 c/ {IPCC允许主核和副核之间进行通信和数据交换。9 Y- i. m  Q0 Z+ Q3 ^
6 {, t- q! z5 O# [' b/ n! W8 y/ Q
+ x! L; Y& m) B8 |0 D+ U( B* a$ b  E" S
微信图片_20240525151226.png : d) z& @3 Y, K$ Y7 ?( p6 X

$ u% _6 k$ ?) d* r+ |创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。! t6 F4 F+ g" Z1 w. w+ p* P5 }

/ \, Y1 o. b, Z5 d8 Z2 i/ D
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。; `, N7 X& s1 S) J; C% j4 W+ N4 x

- i$ A0 W; g) Z3 V
我们在两个工程的main函数中分别添加LED的代码。. p; I( M; `5 }: k. ?( O
  1. while (1)1 z0 T) z( }2 ?0 B. L! S8 u. f* K0 q' y" t
  2.   {. P3 G) E/ m5 s  i) v1 q0 k
  3.     /* USER CODE END WHILE */* H9 K- v, ~! Z6 H, \

  4. : D& C' Z5 N- i( S; p3 O
  5.     /* USER CODE BEGIN 3 */
    $ L. k) Z$ j. [+ ?2 A8 d
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);
    ; m1 f' G8 f) j. c9 v. x3 @
  7.     HAL_Delay(500);# M, \6 m; M# p2 ^; R# `/ L
  8.   }
复制代码

2 T, @: m5 W( M- ]3 [$ k1 p在第二个核的main函数中也添加LED的代码。6 V9 o/ ?( [7 S! V' D  I( A# W
  1. while (1)
    0 B( k* N6 `5 j
  2.   {3 Y+ x) i* F1 y$ _6 ^
  3.     /* USER CODE END WHILE */
    - _% N$ I0 m# }" u  L
  4. 9 Q- |" E0 S* }# U  {
  5.     /* USER CODE BEGIN 3 */# [+ K$ R- y0 r; G
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    5 ]/ \/ O% n. j0 W( J. p
  7.     HAL_Delay(500);8 i: B0 t$ l. r/ w
  8.   }
复制代码

3 R- y5 P8 @6 w$ [$ i' U% y' _" F' }7 b9 D# x
# g- t8 e% Q# n1 J& A1 c- b9 R( p
转载自 :电路小白: a! O; H! x& W) U9 e' A
如有侵权请联系删除
* Z" s- p/ H5 W5 h" y

$ B! Z7 c4 O' F" X0 g
; s0 w; o9 h. _. R+ s( K6 n! [, d* v
1 f* _. M2 o# E8 e+ u, I
赞 收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似技术帖

官网相关资源

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