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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。+ y6 v2 W  h0 Q; N% B
  u: D  ], _  |# Q* a' T& W5 j! Y# R
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。
8 C) h6 a) [8 y3 W( ^6 `( p
' l1 b" k. O" X/ b 微信图片_20240525151256.png
. y+ G1 |5 z0 i5 q5 v5 I+ o8 K' R2 v% C1 H. X% K4 {2 C5 W$ E
它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
9 O" K/ d* V3 |0 F, v1 n
2 C* |9 P7 m6 N! _# o
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。
1 @0 |/ J  }$ B' ^3 ?) L- o& y4 z. y3 J/ M" j+ ~/ P/ T& _8 }
微信图片_20240525151253.png ) j6 I) s6 @$ v
3 Z& _/ {1 `1 p4 p, E
我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。
8 T- V+ P' ^% K3 U
# w9 i6 M. r' ?$ |! I  q4 d
微信图片_20240525151251.png # j% T% `9 w/ {$ O$ T8 T( u" l2 |

2 O+ @1 ^/ ~4 r' A 微信图片_20240525151241.png
8 p& m! p- Q$ u. I" O2 w
& t  j  ^/ [3 _9 _
我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。; K  c: @- d  ~8 L* U6 [# |# h

: k5 u5 U* }" [' s6 F5 U1 q' u
创建任务的时候可以选择单核或者多核。! L6 r8 s, q% D6 R. z* \

1 @# z/ g) c( l' {  m; _" o
微信图片_20240525151238.png
. N' C! z( _' z5 G
3 G8 \( l$ k  c: ]) s3 ?如官网的介绍,每个CPU享有单独的时钟域和外设。- _$ b, z" @7 a/ {: _. t5 D
. d: u/ Q( y+ L7 A0 G7 a  N% D& t
微信图片_20240525151235.png + C- ?1 [4 G" [; U

3 ^5 i4 ?% j# U( w$ R: z从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。) V: K8 s3 g- w* B; [& ]
9 U- \: |" e& g
微信图片_20240525151232.png 2 J" q/ ~, f; l0 s, u( f
5 l% B+ n( V/ Z& \7 T& x) S
将LED的三个IO初始化。9 U% W7 a: V% f% ^6 a- I
1 V! ~# L( {$ L! s4 b, p7 ]
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。3 z2 {5 s" Y. G$ q
2 ?% v3 Q, c& |7 \* S" Q3 L
微信图片_20240525151229.png ) M$ c% S9 @* X7 S

0 M& ]7 z. L/ k* NIPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。
0 P  E' x# K3 `- |
, C5 \; U% A; Z8 b0 E3 w) H

3 j$ h! o% e. w, q! a2 f4 V; rIPCC允许主核和副核之间进行通信和数据交换。
4 J0 m# V! L9 @9 j- |9 [0 M: P6 z0 u, ^4 M5 C/ f* \
# l6 I- x, x# q- z/ R4 Y1 b
微信图片_20240525151226.png * i& E  ]6 U  X+ a' ~! n
% g- b. G9 V! D/ L6 }. {
创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。
* R0 X" `6 f, Z4 A) Z6 i2 Q) |1 i) s$ q. x. W  ~
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。
4 P" R. X, O6 v5 {6 o
4 t2 J! d9 z$ ^+ M+ V# C
我们在两个工程的main函数中分别添加LED的代码。& N7 O+ y, o3 o' `6 K+ V0 |  w
  1. while (1)) Y: J" n" J4 y  O* o- a
  2.   {
    8 M9 w' J4 f% e8 ~2 _* T4 s7 p- _
  3.     /* USER CODE END WHILE */
    & e3 B; o: K; e

  4. 8 g3 s  w; Z4 w
  5.     /* USER CODE BEGIN 3 */
    6 n  x$ `3 B6 o
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);/ v. {: ?6 E: z
  7.     HAL_Delay(500);
    1 _- e2 F: T( a. c7 `
  8.   }
复制代码

4 ^( e! F$ Q0 T( H( Z6 g1 m7 Q, U在第二个核的main函数中也添加LED的代码。! g  ^1 K3 O+ c1 L# E& N& s$ a
  1. while (1)
    % j8 |, Y  X( w# `: ~. O9 u
  2.   {5 A- M' s. J- C) _( I9 }% m
  3.     /* USER CODE END WHILE */! l! I7 J1 [- a& R! g. H

  4. ; Y1 s6 S8 f; n" n
  5.     /* USER CODE BEGIN 3 */6 e/ ?7 `: `) f7 ^& {1 I
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);8 B4 u" R5 b! |3 r- ]. [
  7.     HAL_Delay(500);  P* v7 x9 d$ \/ l: J8 k' k8 S! D
  8.   }
复制代码
" ?1 T# O( t7 }, I4 m' X5 Y( ~
& @/ A$ u- z0 B5 Q/ H  w7 l9 S

. k" K2 S4 m3 B* Y/ N/ k转载自 :电路小白/ v% b' l8 p5 @
如有侵权请联系删除  d( U" q' {% R4 M

6 k! M; K, v! U- e+ D" X( d. Q6 S; |4 E) M+ Y, t: i
# h  V2 u2 ^/ ~# R
收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似分享

官网相关资源

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