All Projects → MayaPosch → Nodate

MayaPosch / Nodate

Licence: LGPL-3.0 license
A light-weight framework for STM32 and other architectures written in C++.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
Ada
118 projects
Makefile
30231 projects
HTML
75241 projects

Labels

Projects that are alternatives of or similar to Nodate

stm32f7xx-hal
A Rust embedded-hal HAL for all MCUs in the STM32 F7 family
Stars: ✭ 71 (-32.38%)
Mutual labels:  stm32
POST S76G
Power-on Self Test for TTGO T-Motion LoRaWAN GNSS tracker and T-Impulse wristband
Stars: ✭ 16 (-84.76%)
Mutual labels:  stm32
STMQRCode
QR code generator for STM32F407
Stars: ✭ 23 (-78.1%)
Mutual labels:  stm32
SCF4-SDK
Motorized zoom lens controller Kurokesu SCF4 module featuring STM32 controller and Onsemi LC898201 driver control software
Stars: ✭ 14 (-86.67%)
Mutual labels:  stm32
STM32 Base Project
STM32 Base project with a lot of stuff
Stars: ✭ 58 (-44.76%)
Mutual labels:  stm32
hftrx
Embedded firmware for ham radio transceivers
Stars: ✭ 27 (-74.29%)
Mutual labels:  stm32
MySQL MariaDB Generic
This MySQL_MariaDB_Generic library helps you connect your boards directly to a MySQL / MariaDB server, either local or cloud-based, so that you can store / retrieve data to / from the server. Supported boards are ESP8266/ESP32, WT32_ETH01 (ESP32 + LAN8720A), nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, Mega, RP2040-based boards, P…
Stars: ✭ 35 (-66.67%)
Mutual labels:  stm32
terminal
Terminal inside the microcontroller (cli for mcu)
Stars: ✭ 31 (-70.48%)
Mutual labels:  stm32
stm32 tiny monitor
A tiny external monitor for PC using STM32 and ST7789. Connects to PC over USB and displays the captured screen on ST7789 (240x240) display.
Stars: ✭ 61 (-41.9%)
Mutual labels:  stm32
IOsonata
IOsonata multi-platform multi-architecture power & performance optimized software library for fast and easy IoT MCU firmware development. Object Oriented design, no board package to define, just pure plug & play any boards
Stars: ✭ 40 (-61.9%)
Mutual labels:  stm32
ulisp-stm32
A version of the Lisp programming language for STM32-based boards
Stars: ✭ 22 (-79.05%)
Mutual labels:  stm32
stm32-blue-pill-rust
Rust for STM32 Blue Pill with Visual Studio Code
Stars: ✭ 98 (-6.67%)
Mutual labels:  stm32
stm32 MacOS
 Simple Yet Powerful SDK for stm32f1 💻
Stars: ✭ 57 (-45.71%)
Mutual labels:  stm32
dap42-hardware
STM32F042Fx based DAP interface hardware
Stars: ✭ 17 (-83.81%)
Mutual labels:  stm32
CML
Fast, safe and easy to use Cortex-M HAL Library, written in C++ 17
Stars: ✭ 17 (-83.81%)
Mutual labels:  stm32
open-watch
An open-source handmade smartwatch. All of the codes, PCBs and schematics are available. ⌚
Stars: ✭ 35 (-66.67%)
Mutual labels:  stm32
OpenOCD
STMicroelectronics customized version of OpenOCD supporting STM32 MCUs and MPUs
Stars: ✭ 34 (-67.62%)
Mutual labels:  stm32
STM32F103 MSD BOOTLOADER
STM32F103 Mass Storage Device Bootloader
Stars: ✭ 23 (-78.1%)
Mutual labels:  stm32
FT800-FT813
Multi-Platform C code Library for EVE graphics controllers from FTDI / Bridgetek (FT810, FT811, FT812, FT813, BT815, BT816, BT817, BT818)
Stars: ✭ 80 (-23.81%)
Mutual labels:  stm32
midi-grid
DIY midi controller project
Stars: ✭ 60 (-42.86%)
Mutual labels:  stm32

Nodate (野点)

A light-weight framework for STM32 and other architectures written in C++ and Ada.

Overview

  • The STM32 branch is currently under heavy development, aiming to support all major STM32 MCUs and features.
  • The SAM branch is considered a future development target once the STM32 branch stabilises.
  • The RP branch is considered an experimental addition.
  • The AVR branch is still a modified Arduino AVR core, supporting C++ and compatible with Arduino libraries. The future of this branch is currently undecided.
  • The ESP8266 branch is experimental and may be removed in the future.

STM32

Supported boards:

  MCU Boards Board name
F0      
  STM32F042K6T Nucleo-F042K6 nucleo-f042k6
  STM32F051R8T STM32F0-Discovery stm32f0-discovery
  STM32F072C8Tx 'Otter Pill' otter_pill
F1      
  STM32F103C8 'Blue Pill' blue_pill
  STM32F103CB Maple Mini maple_mini
F3
  STM32F334R8 Nucleo-F334R8 nucleo-f334r8
F4      
  STM32F407VGT STM32F4-Discovery stm32f4-discovery
  STM32F411CE WeAct MiniF4 ('Black Pill') black_pill_f411
F7      
  STM32F746ZG Nucleo-F746ZG nucleo-f746zg
L4
  STM32L432KC Nucleo-L432KC nucleo-l432kc
  STM32L433CCT Fox Pill fox_pill

Usage

Nodate can be installed in any location, with the only requirement being that the environment variable NODATE_HOME is set to the root of this location.

Examples on how to use Nodate can be found in the arch/stm32/cpp/examples folder. The basic structure of a Nodate project consists out of a Makefile and a source folder. This Makefile defines the project properties and target architecture, board or processor. E.g. the user-editable part of the 'Blinky' example's Makefile'

ARCH ?= stm32

# Target programming language (Ada, C++)
NDLANGUAGE ?= cpp

# Board preset.
BOARD ?= nucleo-f042k6

# Set the name of the output (ELF & Hex) file.
OUTPUT := blinky	

# Add files to include for compilation to these variables.
APP_CPP_FILES = $(wildcard src/*.cpp)
APP_C_FILES = $(wildcard src/*.c)

# Set Nodate modules to enable.
# Available modules:
# ethernet, i2c, gpio, interrupts, timer, usart
NODATE_MODULES = gpio timer

# Set library modules to enable.
# library name matches the folder name in libs/. E.g. freertos, LwIP, libscpi, bme280
NODATE_LIBRARIES = 

When running make in the folder with the project Makefile, the project's .map, .elf and .bin files will be written to the /bin/ sub-folder. Use make clean to remove any build files.

In order to flash the target board, ensure that OpenOCD is installed, then run make flash.

Dependencies

Nodate-STM32 requires make and the arm-none-eabi GCC toolchain to be installed for compilation, and OpenOCD for flashing boards.

For Ada, use the STM32 toolchain from AdaCore.

Implemented features

The following functionality has been implemented on the C++ side:

  • RCC.
  • GPIO (digital & AF).
  • USART (basic UART with settable baud rate).
  • SysTick (millisecond-accurate delay function).
  • IO: set stdout to e.g. a UART.

In progress:

  • U(S)ART with DMA.
  • I2S.
  • I2C.
  • SPI.
  • SDIO (with FatFS).

AVR & Others

The current version has been tested with the following boards:

  • Arduino Duemilanove (ATmega328p)
  • Arduino Mega (ATmega1280, ATmega2560)
  • Arduino Uno (ATmega328p)

Usage

Nodate can be copied to any location, with the environment variable NODATE_HOME set to this location so that it can be found later on.

Take a look at the Blinky example in the examples/ folder to get an idea of how Nodate is meant to be used. Essentially one can use Nodate as one would use Arduino, using the same API calls. Main differences include having to handle one's own includes, such as:

  • <wiring.h> - For GPIO.
  • <HardwareSerial.h> - For UART
  • <SPI.h> - For SPI.
  • <Wire.h> - For I2C.

After adapting the example's Makefile for one's own use, simply execute make and a bin/ folder will be created in the project's root folder containing both the ELF binary and the .hex file that is to be flashed to the device.

Execute make flash COM_PORT=<port> to flash this file to the MCU's EEPROM/Flash. The port is for example COM4 on Windows, and /dev/ttyUSB# on Linux, depending on how the system is connected to the board or programming device.

Note

This is a project in its early stages. While so far UART, GPIO and SPI have been successfully used on a limited number of configurations, this is no guarantee of success on other configurations.

Feedback and PRs would be most kind and helpful :)

Required Packages

Debian

Of course, make is needed.

avr

To compile for AVR on Debian, install the following packages:

  • gcc-avr
  • avr-libc

sam (Atmel ARM)

To compile for sam on Arch Linux, install the following packages:

  • gcc-arm-none-eabi

Arch Linux

Of course, make is needed.

avr

To compile for AVR on Arch Linux, install the following packages:

  • gcc-avr
  • avr-libc

esp8266

To compile for esp8266 on Arch Linux, install the following packages:

  • esp-open-sdk (from AUR, include /opt/esp-open-sdk/xtensa-lx106-elf/bin into PATH)

sam (Atmel ARM)

To compile for sam on Arch Linux, install the following packages:

  • gcc-arm-none-eabi-bin (from AUR)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].