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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-25 15:13
今天在测试ST的STM32WL55评估版时,意外的发现其不仅仅是一块具有无线通讯能力的芯片,还具有双核,同时装载M4和M0+的内核。
& Y2 S+ C4 z5 L6 p  Q( c- [; M8 v+ b( |% K$ z
因为手上发现只有WL55是双核的,下次尝试试用一下其他芯片试试。
' a- _% M( U0 x, {* o- U% R
) P) n0 m0 e. L1 w8 c( _ 微信图片_20240525151256.png 3 @" u6 G! ?& m3 U- h6 C
( y) F% W5 p1 m* ~5 b
它可以使用协处理器来使用双核。这种双核架构使得微控制器能够同时运行多个任务,提高系统的灵活性和性能。每个内核都具有独立的存储器、外设和时钟域,它们可以独立地运行和执行任务,也可以通过共享资源进行通信和同步。
: }9 ]3 L% Y# p
3 E7 f; i, B! `
STM32WL 系列提供了多核调度器(MCS)功能,可以动态地管理主内核和辅助内核之间的任务调度和切换,以优化系统性能和功耗。% S& `% r* j3 B4 H' _/ B& v7 e1 P9 s4 F

: Q  t: E0 z2 e# N5 T3 [9 ]* C, { 微信图片_20240525151253.png ) j5 d/ t: _$ y* p

& [( D  Z$ M5 A( n* x我们在使用CubeMX生成WL的代码的时候可以发现,有一个双核视图。. x5 o8 F6 ]9 D, }
2 P5 m; q' |1 J+ o8 G* @( x
微信图片_20240525151251.png
& E; Y) ?6 G3 u! h7 y+ }5 R0 ~; p* [; T% x" L
微信图片_20240525151241.png
5 \3 w: P2 i$ ?7 E: }
) _" \+ Q9 E3 ?% \0 R0 {) h
我们发现其CubeMX界面中可以把不同的内容分配给不同的核心。
8 u9 g9 T; i& N2 g' r6 P! X) U4 k0 p$ f/ N: p0 T
创建任务的时候可以选择单核或者多核。
( Z& V6 k, D' l  O- W6 p# {$ m9 P& W% c( j9 |, @  B9 s
微信图片_20240525151238.png
7 o+ h, {, i% F. n; g9 n# ^# ?' {; ?
如官网的介绍,每个CPU享有单独的时钟域和外设。8 S9 ~! ]* K- {
( s& {" x! Q, I% P
微信图片_20240525151235.png
) e, o4 J2 L! x) I5 P. @
; p) P0 b+ T8 V; w4 z) o
从官网的原理图中得知,评估版中有三个LED灯,对应着PB15/9/11。这三个LED作为板载LED,我们将尝试利用双核的特性来尝试同时闪烁。) W/ T2 V( @2 p/ ^5 b' {$ y* H: t

7 h' Q1 g. r9 ?$ E3 l 微信图片_20240525151232.png ; l4 _2 d+ x) T1 N# b, u# g

- m/ k3 z, f' n, M1 J) F" z将LED的三个IO初始化。
% d) ?" N# b7 r7 B3 ?+ f6 Z$ j# R# b0 R& J* s0 T
还有一点非常重要,我们需要开启STM32的IPCC.这也是之后要使用无线的条件。
. F3 w4 @8 B2 m- D# U
- W; [8 O! p% X  O0 v 微信图片_20240525151229.png
2 _2 G& Q( k# f) z' \6 [- I
& u: b% f% }2 U6 U$ |2 d* n
IPCC(Inter-Processor Communication Controller)是STM32WL系列微控制器中的一个功能模块,用于实现双核(Dual-Core)之间的通信。5 R2 \  X- Y# \5 T: q; I
) H) M2 X/ J# h& E
3 h; f, u* z, t1 f+ i$ `7 D+ P. `
IPCC允许主核和副核之间进行通信和数据交换。; ~/ O0 J0 s! B# T/ H/ t, g7 l
% S6 Z+ b! e) f5 t* h( Z) y" C' c7 S
! |' v" K1 j- r+ R+ R: t
微信图片_20240525151226.png   r: Z, j& g; ]; P! J5 h

, O! m% L2 c9 i+ S3 ^/ S6 q9 y创建工程后发现其任务由两个核组成,我们尝试在其中分别添加代码。4 K& l! Q. ?  F) m7 |$ w
& y% j5 F0 n/ B8 f
后面的烧录问题卡了我四个多小时,单独写篇文章来描述一下这个烧录的问题。. q* h$ M( }/ b/ D, @9 o3 Z

7 W9 E) H5 A! P4 g/ {- g- m
我们在两个工程的main函数中分别添加LED的代码。
/ d$ B" |& l2 ^+ L5 I
  1. while (1)! Y3 v! C' ]& I$ {% V3 S
  2.   {. ]0 D$ N) f; B9 b5 Y+ m. Q& l
  3.     /* USER CODE END WHILE */
    1 x3 X/ z. V) X
  4. 0 G) @: o+ B+ F
  5.     /* USER CODE BEGIN 3 */9 r3 V, T7 P2 b* \
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);  z4 }- V5 ?# x1 f* ]& C
  7.     HAL_Delay(500);
    3 N- o# m1 |# `5 ]  A$ `! l
  8.   }
复制代码
; N! k' K: R8 d1 H, t
在第二个核的main函数中也添加LED的代码。
1 Y! K; G( w  u- X6 Z6 i
  1. while (1)2 \% z- q% t1 I+ x4 u5 c1 g
  2.   {3 D; H7 P; e) h# F; V; U; N  h
  3.     /* USER CODE END WHILE */
    ) f4 J, i- _$ k0 N7 M4 q6 L* _% e

  4. , Y3 c8 H6 \+ O2 I6 I
  5.     /* USER CODE BEGIN 3 */. {5 H1 T; t4 m+ i
  6.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    $ G% G( h6 p- K$ v  n" \" H
  7.     HAL_Delay(500);! v8 Z  h  X5 C2 g3 H  l
  8.   }
复制代码

; L; C+ \% t' ^. ]6 p0 A$ ]& J3 Q; j/ @" w" M* H' Q; \1 Q

2 r7 w4 i! u8 \1 p# c& y转载自 :电路小白' X6 _3 h$ t7 a0 i1 W% c
如有侵权请联系删除
! v: Z7 _& Y- d& i, ]! ?# C
; c8 y  e+ L) Q' w! K/ \- J! r

" A" l& R( x4 b0 h" z3 x0 v) @! _9 i3 E6 _) w; e( o% L
收藏 评论0 发布时间:2024-5-25 15:13

举报

0个回答

所属标签

相似分享

官网相关资源

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