IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 树莓派PICO+freeRTOS -> 正文阅读

[Python知识库]树莓派PICO+freeRTOS

这是pico板子的两个点灯实验,并非自己写的代码,仅是作为临摹的记录

pico的micropython使用

工具:Thonny, Python IDE for beginners
设置解释器为micro python (pico), 选择好串口,按住按键插入usb,电脑会多出来一个盘

之后把rp2-pico-20210418-v1.15.uf2复制进去,自动重启后连接上。
此时thonny内输入代码:

import machine
import utime
led_onboard = machine.Pin(25, machine.Pin.OUT)
while True:
        led_onboard.value(1)
        utime.sleep_ms(1000)
        led_onboard.value(0)
        utime.sleep_ms(1000)

点击运行当前脚本,板子上的灯就会闪烁了。

由于在公司做的项目都是和freeRTOS有关,而且看到这个RPI-pico是Arm Cortex-M0 +的,是不是也可以在RPI-pico上运行起轻量操作系统呢?答案是肯定的👇

pico跑freeRTOS

出于好奇搜了一下,果然有有意思的项目:
Raspberry Pi Pico Gets supports for Rust, RT-Thread OS and FreeRTOS
上面这个链接中提到了有人在用pico树莓派跑freeRTOS
PicoCPP/RPI-pico-FreeRTOS (github.com)
仓库

虽然这个项目只有60个star,但是被网站引用了,看来是可行的

搞起来!

下载代码

git clone --recursive git@github.com:PicoCPP/RPI-pico-FreeRTOS.git

看一下代码。main.cpp中进行了task创建并开启调度,他创建了这一个task:

static pico_cpp::GPIO_Pin ledPin(25,pico_cpp::PinType::Output);
void vTaskCode( void * pvParameters )
{
    /* The parameter value is expected to be 1 as 1 is passed in the
    pvParameters value in the call to xTaskCreate() below. 
    configASSERT( ( ( uint32_t ) pvParameters ) == 1 );
    */
    for( ;; )
    {
            ledPin.set_high();
            vTaskDelay(1000);
            ledPin.set_low();
            vTaskDelay(1000);
    }
}

环境
cmake : 我用的cmake-3.21.0-windows-x86_64.msi,最好版本>3.12
GNU Arm Embedded Toolchain: 我用的10 2020-q4-major
python:python3的环境即可,我是python3.7.9
把上面两个工具的bin文件目录加到系统path中,python目录也加入path内

由于我安装了Visual Studio,已经有MSVC环境,在Windows上,默认情况下,CMake生成MSVC解决方案。所以要在cmake时指定使用的是Unix平台,这样可以生成Makefile。即使用-G"Unix Makefiles"(如果没有装Visual Studio的话不用加)
输入下面命令:

$ mkdir build
$ cd build
$ cmake .. -G"Unix Makefiles"

可以打印出以下log,表示cmake完成:

D:\work\pico\RPI-pico-FreeRTOS>mkdir build

D:\work\pico\RPI-pico-FreeRTOS>cd build

D:\work\pico\RPI-pico-FreeRTOS\build>cmake .. -G"Unix Makefiles"
PICO_SDK_PATH is D:/work/pico/RPI-pico-FreeRTOS/pico-sdk
Defaulting PICO_PLATFORM to rp2040 since not specified.
Defaulting PICO platform compiler to pico_arm_gcc since not specified.
-- Defaulting build type to 'Release' since not specified.
PICO compiler is pico_arm_gcc
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- The ASM compiler identification is GNU
-- Found assembler: C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin/arm-none-eabi-gcc.exe
Defaulting PICO target board to pico since not specified.
Using board configuration from D:/work/pico/RPI-pico-FreeRTOS/pico-sdk/src/boards/include/boards/pico.h
-- Found Python3: C:/python37/python.exe (found version "3.7.9") found components: Interpreter
TinyUSB available at D:/work/pico/RPI-pico-FreeRTOS/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; adding USB support.
-- Configuring done
-- Generating done
-- Build files have been written to: D:/work/pico/RPI-pico-FreeRTOS/build

D:\work\pico\RPI-pico-FreeRTOS\build>

再输入

$ make

打印出以下log(已省略),编译完成,并且编译出来的elf文件已经转换成uf2格式文件:

D:\work\pico\RPI-pico-FreeRTOS\build>make
Scanning dependencies of target bs2_default
[  1%] Building ASM object pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.obj
[  2%] Linking ASM executable bs2_default.elf
[  2%] Built target bs2_default
。
。
。
[ 98%] Building C object CMakeFiles/hello_world.dir/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
[100%] Linking CXX executable hello_world.elf
   text    data     bss     dec     hex filename
  19480      28   52832   72340   11a94 hello_world.elf
[100%] Built target hello_world

D:\work\pico\RPI-pico-FreeRTOS\build>

编译窗口

成果物

再按住树莓派pico上的按钮连接电脑,把uf2文件拖进去,就会看到程序已经在跑了,可以1秒闪烁一次,看来系统tick也是在工作的:
LED blink

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:27:47  更:2021-08-01 14:28:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 9:22:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码