106 lines
3.0 KiB
Django/Jinja
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 %}
|
|
};
|