Arduino RP2040 多核心运行模式

Arduino RP2040 多核心运行模式


  • 📌RP2040基于Earle F. Philhower, III的开发核心固件:https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  • 🎈相关开发文档在线j简要介绍:https://arduino-pico.readthedocs.io/en/latest/multicore.html

📒多核处理介绍

📑RP2040芯片有2个内核可以相互独立运行,相互共享外设和内存。Arduino代码通常只会在核心0上执行,第二个核心处于低功耗状态下空闲。

📓使用介绍

  • 🌿通过在草图中添加setup1()loop1()函数,您可以使用第二个核心。从setup1()loop1()例程中调用的任何内容都将在第二个核心上执行。

  • 🌿setup()setup1()将同时调用,并且loop()loop1()将在核心的setup()完成后立即启动(即不一定同时启动!)。

📘暂停核心任务相关函数

有时应用程序需要暂停片上的其他内核(即它正在写入闪存或需要在其他事件发生时停止处理)。

  • 🌿void rp2040.idleOtherCore()
  • 发送消息以停止另一个核心(即当从核心0调用时,它会暂停核心1,反之亦然)。等待另一个核心确认后再返回。
  • 另一个内核将禁用其中断并在基于RAM的例程中忙碌等待,因此可以访问闪存和其他外围设备。
  • ✨注意如果核心0空闲时间过长,则USB端口可能会被冻结。这是因为核心0管理USB并需要及时服务IRQ(空闲时无法做到)。
  • 🌿void rp2040.restartCore1()
    从Core 0硬重置Core1并从setup1()重新启动其操作。

📙核心之间的通信

RP2040为内核之间的通信提供了硬件FIFO,但它专门用于上述空闲/恢复调用。相反,请使用以下功能访问软件管理的多核安全FIFO。

  • 🌿void rp2040.fifo.push(uint32_t)
    将一个值推送到另一个核心。如果FIFO已满,将阻塞。

  • 🌿 bool rp2040.fifo.push_nb(uint32_t)
    将一个值推送到另一个核心。如果FIFO已满,则立即返回false并且不阻塞。如果推送成功,则返回true。

  • 🌿uint32_t rp2040.fifo.pop()
    从此核心的FIFO中读取一个值。阻塞,直到一个可用。

  • 🌿bool rp2040.fifo.pop_nb(uint32_t *dest)
    从该核心的FIFO中读取一个值并将其放置在此数据库中。如果成功将返回true,如果弹出将阻止则返回false。

  • 🌿 int rp2040.fifo.available()
    返回此核心的FIFO中可用的值的数量。

📝测试代码

  • 🔖例程位置:C:\Users\用户名\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\3.7.2\libraries\rp2040\examples\Multicore
void setup() {Serial.begin(115200);delay(5000);
}void loop() {Serial.printf("C0: Blue leader standing by...\n");delay(1000);
}// Running on core1
void setup1() {delay(5000);Serial.printf("C1: Red leader standing by...\n");
}void loop1() {Serial.printf("C1: Stay on target...\n");delay(500);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解栈和队列(一):栈

个人主页:17_Kevin-CSDN博客 专栏:《数据结构》 一、栈的概念 栈(Stack)是一种特殊的线性表,它遵循后进先出(Last-In-First-Out,LIFO)的原则。栈可以被看作是一个只能在一端进行操作…

【python】爬取杭州市二手房销售数据做数据分析【附源码】

一、背景 在数据分析和市场调研中,获取房地产数据是至关重要的一环。本文介绍了如何利用 Python 中的 requests、lxml 库以及 pandas 库,结合 XPath 解析网页信息,实现对链家网二手房销售数据的爬取,并将数据导出为 Excel 文件的过…

多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

springcloud修炼——Eureka注册中心

如果你要理解这个技术博客博客专栏 请先学习以下基本的知识: 什么是微服务什么是服务拆分什么是springcloud Springcloud为微服务开发提供了一个比较泛用和全面的解决框架,springcloud继承了spring一直以来的风格——不重复造轮子,里面很多的…

【NLP笔记】Transformer

文章目录 基本架构EmbeddingEncoderself-attentionMulti-Attention残差连接LayerNorm DecoderMask&Cross Attention线性层&softmax损失函数 论文链接: Attention Is All You Need 参考文章: 【NLP】《Attention Is All You Need》的阅读笔记 一…

WPF按钮相关

跟着官网敲的按钮相关的内容,还涉及了wpf很多其他的知识 1.创建基本按钮 <Grid><StackPanel HorizontalAlignment"Left"><Button>Button1</Button><Button>Button2</Button><Button>Button3</Button></StackPan…

如何在gitee上fork github上面的项目,并保持同步更新

前言 当看到github上面比较好的项目&#xff0c;想用到自己的项目&#xff0c;又不想仓库别人看&#xff0c;同时网络不好&#xff0c;囊中又羞涩的情况下&#xff0c;怎么办&#xff1f; 可以考虑用gitee来同步更新github上面的项目。 一、在gitee创建私有仓库 新建的是选择…

Windows电脑设置自动关机的教程

前言 说来也是搞笑&#xff1a;朋友跟我诉苦说&#xff0c;他有时候下班忘了关闭电脑&#xff0c;结果经常因为电脑不关机导致被领导扣工资。 说到扣工资这个问题&#xff0c;直接仲裁就好啦&#xff01;哈哈哈&#xff0c;突然又是一波泼天的富贵来临&#xff0c;这必须要接住…

计算方法——数据拟合

1、引入&#xff1a;单变量数据拟合 原先的插值要求给出的数据点要在拟合的函数上&#xff0c;但数据拟合&#xff0c;只需整体“近似”&#xff0c;不强求所有的数据点一致 假设给出数据&#xff1a; 那么 偏差 的定义为&#xff1a; 但是偏差“大小”&#xff0c;最好是用绝…

计算机网络:数据交换方式

计算机网络&#xff1a;数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式&#xff0c;分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换&#xff0c;在电话问世后不久&#xff0c;人们就发现要让所有的电话机都…

c++类和对象(中)类的6个默认成员函数及const成员函数

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;类和对象 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱们之前也是…

OpenAI的语言生成器GPT-3受到了广泛关注。

OpenAI的第三代语言生成器GPT-3备受关注 概述 OpenAI&#xff0c;一家由Peter Thiel、Elon Musk、Reid Hoffman、Marc Benioff和Sam Altman等知名人士支持的非营利人工智能研究公司&#xff0c;最近发布了其第三代语言预测模型GPT-3。GPT-3的发布受到了早期用户的高度关注。 …

【开发环境搭建篇】IDEA安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

C语言——结构体自定义类型

目录 结构体类型 声明结构体 结构体的特殊声明 创建结构体变量和初始化结构体变量 结构体的自引用 结构体内存对齐 对齐规则 内存对齐存在意义 默认对齐数的修改 结构体传参 结构体实现位段 了解位段是什么 位段的内存分配 位段有跨平台的问题及使用注意事项 C语言…

Spark-Scala语言实战(3)

在之前的文章中&#xff0c;我们学习了如何在来如何在IDEA离线和在线安装Scala&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实…

设计模式(结构型设计模式——装饰者模式)

设计模式&#xff08;结构型设计模式——装饰者模式&#xff09; 装饰者模式 基本定义 装饰模式指的是在不必改变原类文件和使用继承(也是与适配器模式不一样的地方)的情况下&#xff0c;动态地扩展一个对象的功能。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实…

[Halcon学习笔记]标定常用的Halcon标定板规格及说明

1、介绍 大多数标定的要求都是以实心圆或方格来作为标志点&#xff0c;所以一般的标定板为棋盘格或矩阵圆点图&#xff0c;高精度的相机标定过程中&#xff0c;大多是以比较明确的特征点来作为参考&#xff0c;所以通过识别标定板的圆形&#xff0c;拟合出精确的中心位置&…

3.19总结

A计划 题解&#xff1a;这题其实就是一个很简单的三维搜索&#xff0c;有了一个传送门&#xff0c;并且要确定是否传过去的对应位置是墙&#xff0c;防止被装死&#xff0c;同事呢又要在对应的t时间内完成&#xff08;不一定要卡着t时间恰好完成&#xff09; #include<ios…

linux单机部署hadoop

1.下载安装包 https://archive.apache.org/dist/hadoop/common/ 2.上传压缩 3.修改配置文件 1)设置JDK的路径 cd /usr/local/software/hadoop-3.1.3/etc/hadoop vi hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/ 查看…

Windows下的TCP/IP实例

1.注意事项 windows下winsock.h/winsock2.h linux下sys/socket.h 不同平台头文件不一样 #include <winsock.h> 或者 #include <winsock2.h> 2. 安装minGW 目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具&#xff0c;使开发者能够轻松地在 Wind…