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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。
7 m# Y- X) x9 N  v* ]* ^
2 m; X& R/ P2 q5 r. N& r) Y
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。
3 M- c+ @. }( f, H  x, f5 ~- n
微信图片_20240525151256.png
. U" x' P# M" A8 q
4 [  @5 ?$ ~- H  v8 C8 Z% t" f它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
0 m/ G0 T; W" d- p/ N6 q) D) S# x  O2 D0 A" g8 @  o
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。6 y+ _' W5 ^; `9 l  q4 \% H
$ T1 F* h7 S" p" L, N* p$ ]
微信图片_20240525151253.png
8 o4 C+ r( b7 R+ M( u
" b  G$ A8 E, ^& Y9 X) B+ B
我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。0 l3 B0 d: B1 T6 Z# k* `' w
: G7 M! Z& m/ o4 p: g) W
微信图片_20240525151251.png + N+ U( J3 K% Z  Y6 ]

) p9 r: m2 z' {/ e) Z- k5 } 微信图片_20240525151241.png
* q1 P% q* C- R! g5 m/ U( x
! U! D: d& J8 [6 w( ?& y# p
我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。
: |5 Y! {1 S" s4 w8 ?$ c& m2 Q* V4 E7 G0 D
创建任务的时候可以选择单核或者多核。2 I* ~8 h6 v3 ]

# _6 g1 l2 E  O
微信图片_20240525151238.png   V5 g0 a9 H" B+ v; w+ z) Y: r
( d, E8 @1 {0 @/ J# N" g1 }
如官网的介绍,每个CPU享有单独的时钟域和外设。
2 \# p% J: Z" H3 E. C; V8 `
4 }, m. e6 d! p/ V- ~8 A5 M 微信图片_20240525151235.png ! T% m2 Z+ o$ j: f" P' l
& R7 g% l( w0 u2 D# A8 K# `  R4 B+ Q
从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。7 I* {/ n7 e$ [
3 t" D3 i0 K# }* o" _3 K  J
微信图片_20240525151232.png
% v8 W3 w9 p1 Y/ X

, k. y# \4 U. }! T( C' s7 ~% Q将LED的三个IO初始化。6 O6 v0 D7 C1 G, \& M$ s) j' `

  c. o% }9 [4 k
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。
) e  ~3 g$ S; z6 S) K
4 o, a: c$ H" [- R7 n 微信图片_20240525151229.png 8 N( G. S7 `5 u) w  L

% n2 X( R! J2 P* }# {; ]) V6 cIPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。% A# x! b/ L! d

' z4 ]/ M" r. k/ {: y
6 `5 E; d& \' k, z' o! X
IPCC允许主核和副核之间进行通信和数据交换。2 K- ~6 Z% g& o1 @4 ]6 M& x
: J/ }, g& O4 C, P) F

# W; j6 k# s- D- a9 u; O9 g 微信图片_20240525151226.png , G/ |  i5 P7 U7 i" O: t( [# A

0 h* \7 @6 Q% S# F, ~创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。- `' E2 U( ^( {
* {+ r7 _8 d: N+ u; i; T! N
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。
7 u) N8 T8 e% ^* k  @3 l
: X" C8 J1 R7 R; e5 s
我们在两个工程的main函数中分别添加LED的代码。
/ e4 R4 G$ t# H4 @+ C
  1. while (1). ?, ]7 W( g% I" w5 I
  2.   {
    ' b! D* s8 G% Y
  3.     /* USER CODE END WHILE */
    $ n& F& m0 h) d, {2 m0 a

  4. ( `3 u  g  p, Z& R# a+ e
  5.     /* USER CODE BEGIN 3 */
    2 n4 }( M2 K5 v$ q  q/ ]1 ]
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);
    8 L- p5 @/ U% P7 [( ^9 j
  7.     HAL_Delay(500);5 B  R% P8 i$ ], B; P( z: n# e
  8.   }
复制代码
! R! c$ y1 _* ]0 d( u
在第二个核的main函数中也添加LED的代码。* {6 {4 y$ ?6 S9 p/ D( R
  1. while (1)
    1 z% [" C& q3 n( K! _  t6 {
  2.   {& e. q6 `" F+ ^7 e- Y8 A3 Q
  3.     /* USER CODE END WHILE */' ^. j4 I! l6 @) T0 I
  4. ( n/ Q/ g3 ^4 e7 N$ R$ C2 E; r" x
  5.     /* USER CODE BEGIN 3 *// C! |9 E2 F8 |9 V" w
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    6 A6 x1 U3 w  s5 \: _  j
  7.     HAL_Delay(500);( H7 S  F  o" c8 Z5 z
  8.   }
复制代码
9 C  E$ S1 K8 w8 ~7 z/ C
' @: @5 s7 \5 Q  {  r; [

" ?% b( {  ]! m2 ?转载自 :电路小白1 t4 J1 b" g( v
如有侵权请联系删除
$ }5 H2 _1 j0 N& [
! M, T2 P# p& E9 d4 W3 C
5 M: |$ I0 W6 D4 x

6 [5 s+ p( d+ U% h6 i
收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似分享

官网相关资源

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