轻松玩转树莓派Pico之五、FreeRTOS体验

阅读: 评论:0

轻松玩转树莓派Pico之五、FreeRTOS体验

轻松玩转树莓派Pico之五、FreeRTOS体验

树莓派Pico开发板片上主芯片为RP2040单片机,双核 Arm Cortex-M0 + 处理器,工作主频为133MHz,264K片上SRAM,和2MByteFlash。

这么大的RAM和Flash资源,不跑一下RTOS操作系统实在有些可惜,这次就先体验一下FreeRTOS,也为后续项目做一些准备。

一、项目创建

1、按照前文“轻松玩转树莓派Pico之二、创建自己的pico工程项目”一文创建pico_freertos_project项目。

创建pico-freertos.c,并输入:

#include <stdio.h>
#include "pico/stdlib.h"int main(){setup_default_uart();while(1) {printf("Hello World!rn");sleep_ms(1000);}return 0;
}

2、创建项目

cmake_minimum_required(VERSION 3.13)include(pico_ake)project(PICO_FREERTOS_PROJECT C CXX ASM)set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)pico_sdk_init()add_executable(PICO_FREERTOS_PROJECTpico-freertos.c
)pico_add_extra_outputs(PICO_FREERTOS_PROJECT)
target_link_libraries(PICO_FREERTOS_PROJECT pico_stdlib)

3、在项目pico_freertos_project目录下依次输入:

mkdir build && cd build
cmake ..
make

测试是否可以正常编译

二、下载FreeRTOS内核源代码

1、在命令行中输入:

git submodule add  FreeRTOS/FreeRTOS-Kernel

下载完成后,可看到项目目录下会出现FreeRTOS/FreeRTOS-Kernel两级目录。

其中:

(1)FreeRTOS目录用于存放项目需要与RTOS相关的一些文件

(2)FreeRTOS-Kernel目录为FreeRTOS内核源码

2、在FreeRTOS目录下新建include目录,复制FreeRTOSConfig.h至include目录下。

3、在FreeRTOS目录下下新增,不使用FreeRTOS自带的CMake脚本。

在中输入:

add_library(FreeRTOS STATICFreeRTOS-Kernel/event_groups.cFreeRTOS-Kernel/list.cFreeRTOS-Kernel/queue.cFreeRTOS-Kernel/stream_buffer.cFreeRTOS-Kernel/tasks.cFreeRTOS-Kernel/timers.cFreeRTOS-Kernel/portable/GCC/ARM_CM0/port.cFreeRTOS-Kernel/portable/MemMang/heap_4.c
)target_include_directories(FreeRTOS PUBLIC include FreeRTOS-Kernel/include FreeRTOS-Kernel/portable/GCC/ARM_CM0)

Pico开发板上芯片为RP2040,Cortex-M0双核,当前只使用单核,使用portable/GCC/ARM_CM0下的适配文件。

4、修改pico-freertos.c文件

#include <stdio.h>
#include "pico/stdlib.h"#include "FreeRTOS.h"
#include "task.h"void vTaskCode( void * pvParameters )
{/* The parameter value is expected to be 1 as 1 is passed in thepvParameters value in the call to xTaskCreate() below. configASSERT( ( ( uint32_t ) pvParameters ) == 1 );*/const uint LED_PIN = PICO_DEFAULT_LED_PIN;gpio_init(LED_PIN);gpio_set_dir(LED_PIN, GPIO_OUT);for( ;; ){printf("Hello World!rn");vTaskDelay(500);gpio_put(LED_PIN, 1);vTaskDelay(500);gpio_put(LED_PIN, 0);}
}int main()
{setup_default_uart();BaseType_t xReturned;TaskHandle_t xHandle = NULL;/* Create the task, storing the handle. */xReturned = xTaskCreate(vTaskCode,       /* Function that implements the task. */"Blinky task",   /* Text name for the task. */512,             /* Stack size in words, not bytes. */( void * ) 1,    /* Parameter passed into the task. */tskIDLE_PRIORITY,/* Priority at which the task is created. */&xHandle );   vTaskStartScheduler();return 0;
}

5、修改pico_freertos_project项目下的,加入以下内容

pico_add_extra_outputs(PICO_FREERTOS_PROJECT)
target_link_libraries(PICO_FREERTOS_PROJECT pico_stdlib FreeRTOS cmsis_core)add_subdirectory(FreeRTOS)

三、编译

在项目pico_freertos_project目录下依次输入:

cd build
cmake ..
make

四、运行

1、根据“轻松玩转树莓派Pico之四、Ubuntu下在线debug环境搭建”流程,搭建完成Pico VSCode可视化在线debug环境。

2、在线运行:

特别注意,需要先设置一下USB权限,否则会运行失败。

sudo chmod -R 777 /dev/bus/usb/

 可以看到Pico开发板上的led指示灯以500ms亮/500ms灭的频率循环。

本文发布于:2024-01-27 21:25:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063619092725.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:玩转   之五   轻松   树莓派   Pico
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23