Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vedderb/bldc/llms.txt

Use this file to discover all available pages before exploring further.

A VESC application is the firmware layer that receives input signals — from an RC receiver, an analog throttle, a serial controller, or a sensor — and translates them into motor control commands. Only one application runs at a time. You select which one to activate in VESC Tool under App Settings → General → App to use.

Available application types

The app_use enum in datatypes.h defines every application the firmware recognises:
typedef enum {
    APP_NONE = 0,
    APP_PPM,
    APP_ADC,
    APP_UART,
    APP_PPM_UART,
    APP_ADC_UART,
    APP_NUNCHUK,
    APP_NRF,
    APP_CUSTOM,
    APP_PAS,
    APP_ADC_PAS
} app_use;
ValueDescription
APP_NONENo application. Motor sits idle.
APP_PPMRC-style pulse-width signal (servo/RC receiver).
APP_ADCAnalog voltage throttle or brake.
APP_UARTExternal controller over serial UART.
APP_PPM_UARTPPM input with UART active simultaneously.
APP_ADC_UARTADC input with UART active simultaneously.
APP_NUNCHUKWii Nunchuk over I2C.
APP_NRFNordic nRF wireless receiver.
APP_CUSTOMUser-defined custom application.
APP_PASPedal Assist System for e-bikes.
APP_ADC_PASADC throttle combined with PAS sensor.
The firmware default is APP_UART so the UART port remains available for firmware updates. Change this after your hardware is configured.

Selecting an application in VESC Tool

1

Open App Settings

Connect to your VESC in VESC Tool, then navigate to App Settings in the left sidebar.
2

Choose the application

Under the General tab, find the App to use dropdown and select the application that matches your input hardware.
3

Configure app-specific parameters

Each application has its own configuration tab (PPM, ADC, UART, Nunchuk, PAS). Fill in the values for your hardware.
4

Write configuration

Click Write App Configuration to save the settings to the VESC.

Application pages

PPM

RC receiver pulse-width input for ESC-style throttle control.

ADC

Analog voltage throttle and brake via the ADC inputs.

UART

Serial communication with external controllers using the VESC protocol.

Nunchuk

Wii Nunchuk joystick and button control over I2C.

PAS

Pedal assist for e-bikes based on cadence or torque sensing.

Custom

Write your own application logic directly in firmware C code.

Runtime API

Applications are managed through app.h. The key functions are:
const app_configuration *app_get_configuration(void);
void app_set_configuration(app_configuration *conf);
void app_disable_output(int time_ms);
bool app_is_output_disabled(void);
app_disable_output suppresses motor output for the specified number of milliseconds without stopping the application thread — useful during fault recovery or startup sequencing.

Build docs developers (and LLMs) love