Files
edgetx/radio/util/hw_defs/stm32_adc_inputs.jinja
2026-08-03 16:37:20 +08:00

106 lines
3.0 KiB
Django/Jinja

//
// WARNING: DO NOT EDIT THIS FILE
// This file has been generated from the target's JSON hardware description
//
#include "stm32_gpio.h"
static const stm32_adc_input_t _ADC_inputs[] = {
{% for input in adc_inputs.inputs %}
{
// {{ input.name }}
// ADC_INPUT_{{ input.type }},
{{ input.gpio if input.gpio else 'nullptr' }},
{{ input.pin if input.gpio else '0' }},
{{ input.channel if input.channel else '0' }},
{{ '1 // inverted' if input.inverted else '0 // normal' }}
},
{% endfor %}
};
{% for adc in adc_inputs.adcs %}
{% set inputs = adc_inputs.inputs | selectattr('adc', '==', adc.name) | selectattr('channel','defined') %}
static const uint8_t _ADC_{{ adc.name }}_channels[] = {
{% for input in inputs %}
{{ adc_index[input.name] }}, // {{ input.name }}
{% endfor %}
};
{% endfor %}
{% set offset = namespace(value=0) %}
static const stm32_adc_t _ADC_adc[] = {
{% for adc in adc_inputs.adcs | selectattr('name', '!=', 'SPI') %}
{% set inputs = adc_inputs.inputs | selectattr('adc', '==', adc.name) | selectattr('channel','defined') %}
{% set input_count = inputs | list | count %}
{
{{ adc.adc }},
{{ adc.dma if adc.dma else 'nullptr' }},
{{ adc.dma_channel if adc.dma else '0' }},
{{ adc.dma_stream if adc.dma else '0' }},
{{ adc.dma_stream_irq if adc.dma else '(IRQn_Type)-1' }},
_ADC_{{ adc.name }}_channels,
{{ offset.value }},
{{ input_count }},
{{ adc.sample_time if adc.sample_time else '0' }}
},
{% set offset.value = offset.value + input_count %}
{% endfor %}
};
static const stm32_spi_adc_t _ADC_spi[] = {
{% for adc in adc_inputs.adcs | selectattr('name', '==', 'SPI') %}
{% set inputs = adc_inputs.inputs | selectattr('adc', '==', adc.name) | selectattr('channel','defined') %}
{% set input_count = inputs | list | count %}
{
.spi = {
{{ adc.adc }},
{{ adc.gpio_pin_sck }},
{{ adc.gpio_pin_miso }},
{{ adc.gpio_pin_mosi }},
{{ adc.gpio_pin_cs }},
},
_ADC_{{ adc.name }}_channels,
{{ input_count }}
},
{% endfor %}
};
{% for adc in adc_inputs.adcs | selectattr('name', '!=', 'SPI') %}
{% if adc.dma %}
extern "C" void {{ adc.dma_stream_irq_handler }} (void)
{
stm32_hal_adc_dma_isr(&_ADC_adc[{{ loop.index0 }}]);
}
{% endif %}
{% endfor %}
extern "C" void ADC_IRQHandler()
{
{% for adc in adc_inputs.adcs | selectattr('name', '!=', 'SPI') %}
stm32_hal_adc_isr(&_ADC_adc[{{ loop.index0 }}]);
{% endfor %}
}
#if defined(STM32H7)
extern "C" void ADC3_IRQHandler()
{
{% for adc in adc_inputs.adcs | selectattr('name', '!=', 'SPI') %}
stm32_hal_adc_isr(&_ADC_adc[{{ loop.index0 }}]);
{% endfor %}
}
#endif
{% for adc_gpio, adc_inputs in adc_gpios.items() | sort %}
static const uint32_t _ADC_{{ adc_gpio }}_pins[] = {
{% for input in adc_inputs %}
{{ input.pin }},
{% endfor %}
};
{% endfor %}
static const stm32_adc_gpio_t _ADC_GPIOs[] = {
{% for adc_gpio, adc_inputs in adc_gpios.items() | sort %}
{ {{ adc_gpio }}, _ADC_{{ adc_gpio }}_pins, {{ adc_inputs|count }} },
{% endfor %}
};