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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。
; O; j" s6 c6 z' t. d2 V2 O6 o5 p. _3 r' Q6 e
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。" |2 \8 U. Y' H* I9 [3 F
6 W! r5 n- k& ~
微信图片_20240525151256.png
5 ]( k3 P7 I% t& Q  x/ o$ n% e1 R
( H. a9 T$ ]+ a# F% Z它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
' t4 s8 W1 L3 Z) Q9 {5 j- L4 @: \- w& {. E' `7 \( B  R$ _5 u
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。
" C/ z$ ^2 n! I  `6 ?7 F: U+ [" f( u! G; |9 `9 I- Q
微信图片_20240525151253.png * {* Q8 l% e# w! m: m+ \4 c, d

# `: s$ z6 L8 I我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。! U5 D9 [6 |8 d8 s" z8 e
/ G) f: f! k" Z* z, Z# h0 ~; E
微信图片_20240525151251.png % K# k5 O6 C3 Z
! W0 y" {: Y8 L
微信图片_20240525151241.png
; S& F3 D9 M1 H- D  D

3 @5 |/ |& i& |2 a% s- T我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。
$ E( ^7 u5 \4 r, {, i7 G5 D1 i! s5 Y" i  r! x6 o
创建任务的时候可以选择单核或者多核。
$ Z9 o( B0 i# r' w/ k; k5 `# B# v$ b+ Q( D
微信图片_20240525151238.png / p/ ~/ Y# [' Y( [% _: n

+ Q. g. Y0 C2 c' A. p& X4 b2 I如官网的介绍,每个CPU享有单独的时钟域和外设。: r9 @* V* d1 o9 I9 a. V

% n% |3 ~2 h# K/ o2 [3 S 微信图片_20240525151235.png
7 ~. S0 U9 S# a8 S' j) F5 o
+ A( r3 J- ~8 v, u
从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。
0 f, d# J4 I' f* ^  l
4 F+ ]9 l0 f- v6 Y% B( i( g) V* S6 K 微信图片_20240525151232.png
3 I; m' K6 b& s* m

4 z& X) }: o% p- h+ ~; d将LED的三个IO初始化。- t" r+ u% M6 {5 t6 N: S
/ n) |' |' d6 J& L( B3 j
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。
$ q$ m, x( n0 r' G
4 w( D9 i. d# D( |4 j) e 微信图片_20240525151229.png
9 w4 I1 Q  ~, f$ A

' |! `' l5 [8 P: v7 L. D# pIPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。/ p- i0 X3 k; Y3 a* G

' Z: R5 b7 w: m/ i
  [4 v4 j8 l. `; E
IPCC允许主核和副核之间进行通信和数据交换。
5 D" C. R% f- Y5 b5 _3 |, C% w; I/ m! z5 x/ f' |
0 L4 Q+ P% J3 d
微信图片_20240525151226.png
7 z& B7 h9 L( a
9 w5 N. d/ a; a+ R
创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。" y( N" o- ^% ]! N+ k
! Y3 i% B. _2 ?4 n1 L5 f
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。4 u! j' p" A! H

+ B8 N" ]! \9 |+ M
我们在两个工程的main函数中分别添加LED的代码。/ o: i0 \! P, d" v
  1. while (1)3 Z6 `: w$ u2 C, `+ J  L
  2.   {& Z+ G% a/ T$ n( V/ U
  3.     /* USER CODE END WHILE */
    " S* b: @0 x. ?2 ~  R
  4. 9 S! ~3 ^# P9 q6 R( Y1 K
  5.     /* USER CODE BEGIN 3 */$ k# b5 ^8 b8 f$ E+ B. w5 O7 N
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);
    $ L  I9 _9 @- b
  7.     HAL_Delay(500);1 Z0 [- m9 F$ V' o# V+ D
  8.   }
复制代码

  n, i6 k( D' ?% [6 o0 D) _8 _在第二个核的main函数中也添加LED的代码。; K; \. T7 C9 ^1 y2 X
  1. while (1)
    * B! k+ z: g. ^8 h
  2.   {
    0 y; I9 D4 ~0 T5 D. k: @& T9 F
  3.     /* USER CODE END WHILE */: u2 M7 G! I# B' |( P9 R$ q' I" g: X8 [
  4. 3 w/ E7 r3 u+ z0 ^$ P
  5.     /* USER CODE BEGIN 3 */, q9 j# A- {1 E8 P0 s7 {
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    ) U  o/ A/ v' {0 W( s3 o" @" j
  7.     HAL_Delay(500);5 t7 m6 k2 V: E5 q5 W/ {
  8.   }
复制代码
5 i8 c  Y7 V9 T4 l2 a* g
2 Y6 _( J$ p9 b  Z6 g9 q

* E* u; C: V! z: i) R' `转载自 :电路小白
1 Z, K6 s8 X/ ^' z. u0 P, H如有侵权请联系删除
, s' }0 Y) I9 y; s' G
+ _$ o* R# j0 G2 {: b* H

. d4 K) P% t6 n
8 [) `- a$ f# i! @& K' e
赞 收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似技术帖

官网相关资源

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