init repository
This commit is contained in:
commit
a159937fa9
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.vscode
|
||||||
|
|
||||||
|
picotool
|
||||||
|
sdk
|
||||||
|
|
||||||
|
build
|
||||||
|
toolchain
|
||||||
28
Makefile
Normal file
28
Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
export INSTALL_PATH := $(PWD)
|
||||||
|
|
||||||
|
SDK_VERSION := 2.1.0
|
||||||
|
PICOTOOL := $(INSTALL_PATH)/picotool/$(SDK_VERSION)/build/picotool
|
||||||
|
|
||||||
|
export PICO_SDK_PATH=$(INSTALL_PATH)/sdk/$(SDK_VERSION)
|
||||||
|
# if using a different platform or arch, set ot here
|
||||||
|
export PICO_PLATFORM=rp2350
|
||||||
|
|
||||||
|
# project name, need to be passed as make input (ex: make project name=test)
|
||||||
|
name := ""
|
||||||
|
|
||||||
|
install:
|
||||||
|
@./scripts/install_sdk.bash $(SDK_VERSION)
|
||||||
|
@./scripts/install_picotool.bash $(SDK_VERSION)
|
||||||
|
|
||||||
|
info:
|
||||||
|
@$(PICOTOOL) info -a
|
||||||
|
|
||||||
|
project:
|
||||||
|
@./scripts/scaffold_project.bash $(name) $(SDK_VERSION)
|
||||||
|
|
||||||
|
compile:
|
||||||
|
@(test -d ${name} && mkdir -p ${name}/build && cd ${name}/build && cmake .. && make -j$(nproc) && echo "project compile successfully") || echo "error: unable to compile project: $(name)"
|
||||||
|
|
||||||
|
push: compile
|
||||||
|
@(test -f $(name)/build/$(name).elf && $(PICOTOOL) load -fx -v $(name)/build/$(name).elf) || echo "error: unable to push project $(name) to device"
|
||||||
|
|
||||||
83
README.md
Normal file
83
README.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Picoco
|
||||||
|
|
||||||
|
A repository to store Rasbperry Pico C projects.
|
||||||
|
|
||||||
|
It uses the **Freenove Super Starter Kit For Raspberry Pi Pico**, the tutorial and ressources can be found [here](https://github.com/Freenove/Freenove_Super_Starter_Kit_for_Raspberry_Pi_Pico).
|
||||||
|
|
||||||
|
The official documentation to start with the Raspberry Pi Pico: [Getting started with Raspberry Pi Pico-series](https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
In order to build and deploy the binary in the Raspberry Pi Pico, you have to install the **Pico C SDK** and **Picotool**.
|
||||||
|
|
||||||
|
So, you need to execute the following command that will installed both:
|
||||||
|
```bash
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE**: this will install the **SDK** and **Picotool** in the current directory. If you want to set an other intallation path,
|
||||||
|
set the `INSTALL_PATH` variable. The `INSTALL_PATH` directory must exists, create it before and make sure user have write rights.
|
||||||
|
|
||||||
|
The **SDK** and **Picotool** version used is: **2.1.0**.
|
||||||
|
|
||||||
|
|
||||||
|
## Generate a project
|
||||||
|
|
||||||
|
You can generate a new Pico C project with the command:
|
||||||
|
```
|
||||||
|
make project name=<project_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
It will create a new project in the current directory and build it.
|
||||||
|
|
||||||
|
## Compile
|
||||||
|
|
||||||
|
Update you `main.c` file and then launch:
|
||||||
|
```
|
||||||
|
make compile name=<project_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
It will generate the `.elf` file in the `build` directory.
|
||||||
|
|
||||||
|
## Load binary into the device
|
||||||
|
|
||||||
|
You can combine both **compilation** and **load** with the following command:
|
||||||
|
```bash
|
||||||
|
make push name=<project_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE**: you have to USB plug your Pico device in **BOOTSEL** mode before executing the command.
|
||||||
|
|
||||||
|
After the load, the device will automatically reboot and be unpluged. And the program fresly pushed will start.
|
||||||
|
|
||||||
|
## Get device info
|
||||||
|
When plugging your device in **BOOTSEL** mode, you can get the device information using:
|
||||||
|
```bash
|
||||||
|
make info
|
||||||
|
|
||||||
|
Program Information
|
||||||
|
name: simple_led
|
||||||
|
version: 0.1
|
||||||
|
binary start: 0x10000000
|
||||||
|
binary end: 0x10001744
|
||||||
|
target chip: RP2350
|
||||||
|
image type: ARM Secure
|
||||||
|
|
||||||
|
Fixed Pin Information
|
||||||
|
none
|
||||||
|
|
||||||
|
Build Information
|
||||||
|
sdk version: 2.1.0
|
||||||
|
pico_board: pico2
|
||||||
|
boot2_name: boot2_w25q080
|
||||||
|
build date: Feb 18 2025
|
||||||
|
build attributes: Release
|
||||||
|
|
||||||
|
Metadata Block 1
|
||||||
|
address: 0x10000138
|
||||||
|
next block address: 0x10001730
|
||||||
|
block type: image def
|
||||||
|
target chip: RP2350
|
||||||
|
image type: ARM Secure
|
||||||
|
```
|
||||||
|
|
||||||
75
scripts/install_picotool.bash
Executable file
75
scripts/install_picotool.bash
Executable file
@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
#
|
||||||
|
# Download and compile `picotool`.
|
||||||
|
# src: https://github.com/raspberrypi/picotool
|
||||||
|
#
|
||||||
|
# The Pico C SDK must be installed before,
|
||||||
|
# see: `install_sdk.bash`.
|
||||||
|
#
|
||||||
|
# ex: ./install_picotool.bash 2.1.0
|
||||||
|
# NOTE: the version passed must match the SDK
|
||||||
|
# version installed
|
||||||
|
#
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
PICOTOOL_VERSION=$1
|
||||||
|
REGEX_VERSION="^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}$"
|
||||||
|
|
||||||
|
if [[ -z ${INSTALL_PATH} ]]
|
||||||
|
then
|
||||||
|
INSTALL_PATH=${PWD}
|
||||||
|
fi
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage:"
|
||||||
|
echo "./install_picotool.bash <version> (ex: ./install_picotool.bash 2.1.0)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ! "${PICOTOOL_VERSION}" =~ ${REGEX_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "error: unable to parse the picotool version: '${PICOTOOL_VERSION}'"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d ${INSTALL_PATH}/sdk/${PICOTOOL_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "error: SDK ${PICOTOOL_VERSION} must be installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "install dependencies..."
|
||||||
|
sudo apt install build-essential pkg-config libusb-1.0-0-dev cmake
|
||||||
|
|
||||||
|
echo "installing picotool..."
|
||||||
|
wget https://github.com/raspberrypi/picotool/releases/download/${PICOTOOL_VERSION}/picotool-${PICOTOOL_VERSION}.tar.gz -P ${INSTALL_PATH}
|
||||||
|
if [[ $? != 0 ]]
|
||||||
|
then
|
||||||
|
echo "error: unable to get picotool VERSION: ${PICOTOOL_VERSION}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}
|
||||||
|
tar xzvf ${INSTALL_PATH}/picotool-${PICOTOOL_VERSION}.tar.gz -C ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}
|
||||||
|
rm ${INSTALL_PATH}/picotool-${PICOTOOL_VERSION}.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "building picotool..."
|
||||||
|
mkdir -p ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
|
||||||
|
PICO_SDK_PATH=${INSTALL_PATH}/sdk/${PICOTOOL_VERSION}
|
||||||
|
|
||||||
|
cd ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
|
||||||
|
cmake ..
|
||||||
|
make -C ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
|
||||||
|
|
||||||
|
picotool_version=$(${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build/picotool version)
|
||||||
|
echo "${picotool_version} compiled successfully"
|
||||||
|
|
||||||
|
echo "adding udev picotool rules..."
|
||||||
|
sudo cp ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/udev/99-picotool.rules /etc/udev/rules.d/
|
||||||
|
|
||||||
|
echo "picotool installation completed"
|
||||||
55
scripts/install_sdk.bash
Executable file
55
scripts/install_sdk.bash
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
#
|
||||||
|
# Download and install Pico C SDK.
|
||||||
|
# src: https://github.com/raspberrypi/pico-sdk
|
||||||
|
#
|
||||||
|
# ex: ./install_sdk.bash 2.1.0
|
||||||
|
#
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
PICO_SDK_VERSION=$1
|
||||||
|
REGEX_VERSION="^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}$"
|
||||||
|
|
||||||
|
if [[ -z ${INSTALL_PATH} ]]
|
||||||
|
then
|
||||||
|
INSTALL_PATH=${PWD}
|
||||||
|
fi
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage:"
|
||||||
|
echo "./install_sdk.bash <version> (ex: ./install_sdk.bash 2.1.0)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ! "${PICO_SDK_VERSION}" =~ ${REGEX_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "error: unable to parse the SDK version: '${PICO_SDK_VERSION}'"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "installing dependencies..."
|
||||||
|
sudo apt install cmake python3 build-essential gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
||||||
|
|
||||||
|
echo "installing Pico C SDK ${PICO_SDK_VERSION}"
|
||||||
|
|
||||||
|
pico_tar_file="pico-sdk-${PICO_SDK_VERSION}.tar.gz"
|
||||||
|
wget https://github.com/raspberrypi/pico-sdk/releases/download/${PICO_SDK_VERSION}/pico-sdk-${PICO_SDK_VERSION}.tar.gz -P ${INSTALL_PATH}
|
||||||
|
if [[ $? != 0 ]]
|
||||||
|
then
|
||||||
|
echo "error: unable to get pico SDK VERSION: ${PICO_SDK_VERSION}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION}
|
||||||
|
tar xzvf ${INSTALL_PATH}/${pico_tar_file} -C ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION}
|
||||||
|
rm ${INSTALL_PATH}/${pico_tar_file}
|
||||||
|
|
||||||
|
echo "Pico C SDK installed successfully: ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Pico C SDK already exists: ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION}"
|
||||||
82
scripts/scaffold_project.bash
Executable file
82
scripts/scaffold_project.bash
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# Generate a new project from templates.
|
||||||
|
# It scaffold a project, ready to use, in the current directory with:
|
||||||
|
# * CMakeLists.txt
|
||||||
|
# * main.c
|
||||||
|
#
|
||||||
|
# ./install_sdk.bash <project_name> <sdk_version>
|
||||||
|
# ex: ./install_sdk.bash <project_name> <sdk_version>
|
||||||
|
#
|
||||||
|
# The SDK must be installed before using the script.
|
||||||
|
# If the SDK is located in a different directory than the project
|
||||||
|
# set the `INSTALL_PATH` env var to point to the SDK directory.
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
PROJECT_NAME=$1
|
||||||
|
PICO_SDK_VERSION=$2
|
||||||
|
REGEX_VERSION="^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}$"
|
||||||
|
|
||||||
|
if [[ -z ${INSTALL_PATH} ]]
|
||||||
|
then
|
||||||
|
INSTALL_PATH=${PWD}
|
||||||
|
fi
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage:"
|
||||||
|
echo "./scaffold_project.bash <project_name> <sdk_version> (ex: ./scaffold_project.bash test 2.1.0)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -z ${PROJECT_NAME} ]]
|
||||||
|
then
|
||||||
|
echo "error: project name must not be empty"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PROJECT_DIR="${PROJECT_NAME}"
|
||||||
|
if [[ -d ${PROJECT_DIR} ]]
|
||||||
|
then
|
||||||
|
echo "error: a project with same name: ${PROJECT_NAME} already exists"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! "${PICO_SDK_VERSION}" =~ ${REGEX_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "error: unable to parse the SDK version: '${PICO_SDK_VERSION}' (ex: ./install_sdk 2.1.0)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d ${INSTALL_PATH}/sdk/${PICO_SDK_VERSION} ]]
|
||||||
|
then
|
||||||
|
echo "error: no SDK v${PICO_SDK_VERSION} exists, please make an install first"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PICO_SDK_PATH=${INSTALL_PATH}/sdk/${PICO_SDK_VERSION}
|
||||||
|
|
||||||
|
mkdir -p ${PROJECT_DIR}
|
||||||
|
|
||||||
|
echo "generating templates..."
|
||||||
|
|
||||||
|
# build from the cmake list template
|
||||||
|
cp templates/CMakeLists.txt.tpl templates/CMakeLists.txt.tmp
|
||||||
|
sed -i "s/<project_name>/${PROJECT_NAME}/g" templates/CMakeLists.txt.tmp
|
||||||
|
mv templates/CMakeLists.txt.tmp ${PROJECT_DIR}/CMakeLists.txt
|
||||||
|
|
||||||
|
# move the c src file into the project folder
|
||||||
|
cp templates/main.c.tpl templates/main.c.tmp
|
||||||
|
sed -i "s/<prog_name>/${PROJECT_NAME}/g" templates/main.c.tmp
|
||||||
|
mv templates/main.c.tmp ${PROJECT_DIR}/main.c
|
||||||
|
|
||||||
|
echo "building the project: ${PROJECT_NAME}..."
|
||||||
|
cd ${PROJECT_DIR}
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
echo "project ${PROJECT_NAME} successfully generated"
|
||||||
39
simple_led/CMakeLists.txt
Normal file
39
simple_led/CMakeLists.txt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Generated Cmake Pico project file
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
set(CMAKE_C_COMPILER "/home/romain/Downloads/pico-sdk/toolchain/riscv/bin/riscv32-unknown-elf-gcc")
|
||||||
|
|
||||||
|
# Pull in Raspberry Pi Pico SDK (must be before project)
|
||||||
|
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
|
||||||
|
|
||||||
|
project(simple_led C CXX ASM)
|
||||||
|
|
||||||
|
# Initialise the Raspberry Pi Pico SDK
|
||||||
|
pico_sdk_init()
|
||||||
|
|
||||||
|
# Add executable. Default name is the project name, version 0.1
|
||||||
|
|
||||||
|
add_executable(simple_led main.c )
|
||||||
|
|
||||||
|
pico_set_program_name(simple_led "simple_led")
|
||||||
|
pico_set_program_version(simple_led "0.1")
|
||||||
|
|
||||||
|
# Modify the below lines to enable/disable output over UART/USB
|
||||||
|
pico_enable_stdio_uart(simple_led 0)
|
||||||
|
pico_enable_stdio_usb(simple_led 1)
|
||||||
|
|
||||||
|
# Add the standard library to the build
|
||||||
|
target_link_libraries(simple_led
|
||||||
|
pico_stdlib)
|
||||||
|
|
||||||
|
# Add the standard include files to the build
|
||||||
|
target_include_directories(simple_led PRIVATE
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
pico_add_extra_outputs(simple_led)
|
||||||
|
|
||||||
97
simple_led/main.c
Normal file
97
simple_led/main.c
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#ifndef LED_DELAY_MS
|
||||||
|
#define LED_DELAY_MS 250
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define GPIO_15 15
|
||||||
|
#define GPIO_13 13
|
||||||
|
|
||||||
|
void pico_led_init(void) {
|
||||||
|
#ifdef PICO_DEFAULT_LED_PIN
|
||||||
|
gpio_init(PICO_DEFAULT_LED_PIN);
|
||||||
|
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
gpio_init(GPIO_15);
|
||||||
|
gpio_set_dir(GPIO_15, GPIO_OUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void blink_led(void) {
|
||||||
|
pico_led_init();
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
gpio_put(GPIO_15, false);
|
||||||
|
gpio_put(PICO_DEFAULT_LED_PIN, true);
|
||||||
|
|
||||||
|
sleep_ms(LED_DELAY_MS);
|
||||||
|
|
||||||
|
gpio_put(GPIO_15, true);
|
||||||
|
gpio_put(PICO_DEFAULT_LED_PIN, false);
|
||||||
|
|
||||||
|
sleep_ms(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum button_state {OFF, ON};
|
||||||
|
|
||||||
|
typedef struct state state;
|
||||||
|
struct state {
|
||||||
|
int counter;
|
||||||
|
int bs;
|
||||||
|
bool can_incr;
|
||||||
|
};
|
||||||
|
|
||||||
|
static state global_state = (state) {
|
||||||
|
.counter = 0,
|
||||||
|
.can_incr = true
|
||||||
|
};
|
||||||
|
|
||||||
|
void incr_counter(state *s) {
|
||||||
|
if (s != NULL) {
|
||||||
|
if (s->can_incr) {
|
||||||
|
s->counter++;
|
||||||
|
s->can_incr = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_can_incr(state *s, bool v) {
|
||||||
|
if (s != NULL) {
|
||||||
|
s->can_incr = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool can_push(state *s) {
|
||||||
|
if (s != NULL)
|
||||||
|
return s->counter <= 10;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
gpio_init(GPIO_15);
|
||||||
|
gpio_set_dir(GPIO_15, GPIO_OUT);
|
||||||
|
|
||||||
|
gpio_init(GPIO_13);
|
||||||
|
gpio_set_dir(GPIO_13, GPIO_IN);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
// return low level when the button is pressed
|
||||||
|
if (!gpio_get(GPIO_13)) {
|
||||||
|
sleep_ms(20); // avoid "bounce" phenomenon (buffeting)
|
||||||
|
if (!gpio_get(GPIO_13)) {
|
||||||
|
incr_counter(&global_state);
|
||||||
|
if (can_push(&global_state))
|
||||||
|
gpio_put(GPIO_15, true);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set_can_incr(&global_state, true);
|
||||||
|
gpio_put(GPIO_15, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
38
templates/CMakeLists.txt.tpl
Normal file
38
templates/CMakeLists.txt.tpl
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Generated Cmake Pico project file
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
# Pull in Raspberry Pi Pico SDK (must be before project)
|
||||||
|
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
|
||||||
|
|
||||||
|
project(<project_name> C CXX ASM)
|
||||||
|
|
||||||
|
# Initialise the Raspberry Pi Pico SDK
|
||||||
|
pico_sdk_init()
|
||||||
|
|
||||||
|
# Add executable. Default name is the project name, version 0.1
|
||||||
|
|
||||||
|
add_executable(<project_name> main.c )
|
||||||
|
|
||||||
|
pico_set_program_name(<project_name> "<project_name>")
|
||||||
|
pico_set_program_version(<project_name> "0.1")
|
||||||
|
|
||||||
|
# Modify the below lines to enable/disable output over UART/USB
|
||||||
|
pico_enable_stdio_uart(<project_name> 0)
|
||||||
|
pico_enable_stdio_usb(<project_name> 1)
|
||||||
|
|
||||||
|
# Add the standard library to the build
|
||||||
|
target_link_libraries(<project_name>
|
||||||
|
pico_stdlib)
|
||||||
|
|
||||||
|
# Add the standard include files to the build
|
||||||
|
target_include_directories(<project_name> PRIVATE
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
pico_add_extra_outputs(<project_name>)
|
||||||
|
|
||||||
12
templates/main.c.tpl
Normal file
12
templates/main.c.tpl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <pico/stdlib.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
stdio_init_all();
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
printf("<prog_name> is running...\n");
|
||||||
|
sleep_ms(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user