Loading...
Searching...
No Matches
periph_conf.h File Reference

Peripheral MCU configuration for the STM32L476G-DISCO board. More...

Detailed Description

Peripheral MCU configuration for the STM32L476G-DISCO board.

Author
Alexandre Abadie alexa.nosp@m.ndre.nosp@m..abad.nosp@m.ie@i.nosp@m.nria..nosp@m.fr

Definition in file periph_conf.h.

#include "periph_cpu.h"
#include "clk_conf.h"
#include "cfg_rtt_default.h"
#include "cfg_usb_otg_fs.h"
+ Include dependency graph for periph_conf.h:

Go to the source code of this file.

#define CONFIG_BOARD_HAS_LSE   1
 

Timer configuration

#define TIMER_0_ISR   isr_tim5
 
#define TIMER_NUMOF   ARRAY_SIZE(timer_config)
 
static const timer_conf_t timer_config []
 

UART configuration

#define UART_0_ISR   (isr_usart2)
 
#define UART_NUMOF   ARRAY_SIZE(uart_config)
 
static const uart_conf_t uart_config []
 
#define VBAT_ADC   ADC_LINE(5)
 VBAT ADC line.
 
#define ADC_NUMOF   ARRAY_SIZE(adc_config)
 Number of ADC devices.
 
static const adc_conf_t adc_config []
 ADC configuration.
 

PWM configuration

To find appriopate device and channel find in the MCU datasheet table concerning "Alternate function AF0 to AF7" a text similar to TIM[X]_CH[Y], where: TIM[X] - is device, [Y] - describes used channel (indexed from 0), for example TIM2_CH1 is channel 0 in configuration structure (cc_chan - field), Port column in the table describes connected port.

For stm32l476g-disco this information is in the MCU datasheet, Table 17, page 88.

Remark! PMW device 0 overlaps with ADC.

#define PWM_NUMOF   ARRAY_SIZE(pwm_config)
 
static const pwm_conf_t pwm_config []
 

Macro Definition Documentation

◆ ADC_NUMOF

#define ADC_NUMOF   ARRAY_SIZE(adc_config)

Number of ADC devices.

Definition at line 129 of file periph_conf.h.

◆ CONFIG_BOARD_HAS_LSE

#define CONFIG_BOARD_HAS_LSE   1

Definition at line 24 of file periph_conf.h.

◆ PWM_NUMOF

#define PWM_NUMOF   ARRAY_SIZE(pwm_config)

Definition at line 173 of file periph_conf.h.

◆ TIMER_0_ISR

#define TIMER_0_ISR   isr_tim5

Definition at line 50 of file periph_conf.h.

◆ TIMER_NUMOF

#define TIMER_NUMOF   ARRAY_SIZE(timer_config)

Definition at line 52 of file periph_conf.h.

◆ UART_0_ISR

#define UART_0_ISR   (isr_usart2)

Definition at line 78 of file periph_conf.h.

◆ UART_NUMOF

#define UART_NUMOF   ARRAY_SIZE(uart_config)

Definition at line 80 of file periph_conf.h.

◆ VBAT_ADC

#define VBAT_ADC   ADC_LINE(5)

VBAT ADC line.

Definition at line 124 of file periph_conf.h.

Variable Documentation

◆ adc_config

const adc_conf_t adc_config[]
static
Initial value:
= {
{GPIO_PIN(PORT_A, 0), 0, 5},
{GPIO_PIN(PORT_A, 5), 0, 10},
{GPIO_PIN(PORT_A, 1), 0, 6},
{GPIO_PIN(PORT_A, 2), 0, 7},
{GPIO_PIN(PORT_A, 3), 0, 8},
{GPIO_UNDEF, 0, 18},
}
@ PORT_A
port A
Definition periph_cpu.h:47
#define GPIO_PIN(x, y)
Define a CPU specific GPIO pin generator macro.
Definition periph_cpu.h:46
#define GPIO_UNDEF
Definition of a fitting UNDEF value.

ADC configuration.

Note that we do not configure all ADC channels, and not in the STM32L476VG order. Instead, we just define 5 ADC channels, for the next adjacent 5 pins, from 10 to 14, in the header P1 and the internal VBAT channel.

To find appropriate device and channel find in the board manual, table showing pin assignments and information about ADC - a text similar to ADC[X]_IN[Y], where: [X] - describes used device - indexed from 0, for example ADC12_IN10 is device 0 or device 1, [Y] - describes used channel - indexed from 1, for example ADC12_IN10 is channel 10

For STM32L476VG this information is in MCU datasheet, Table 16, page 73.

VBAT is connected ADC1_IN18 or ADC3_IN18 and a voltage divider is used, so that only 1/3 of the actual VBAT is measured. This allows for a supply voltage higher than the reference voltage.

For STM32L476VG more information is provided in MCU datasheet, in section 3.15.3 - Vbat battery voltage monitoring, page 42.

Definition at line 112 of file periph_conf.h.

◆ pwm_config

const pwm_conf_t pwm_config[]
static
Initial value:
= {
{
.dev = TIM2,
.rcc_mask = RCC_APB1ENR1_TIM2EN,
.chan = { { .pin = GPIO_PIN(PORT_A, 5), .cc_chan = 0},
{ .pin = GPIO_PIN(PORT_A, 1), .cc_chan = 1},
{ .pin = GPIO_PIN(PORT_A, 2), .cc_chan = 2},
{ .pin = GPIO_PIN(PORT_A, 3), .cc_chan = 3} },
.af = GPIO_AF1,
.bus = APB1
},
{
.dev = TIM1,
.rcc_mask = RCC_APB2ENR_TIM1EN,
.chan = { { .pin = GPIO_PIN(PORT_E, 11), .cc_chan = 1},
{ .pin = GPIO_PIN(PORT_E, 13), .cc_chan = 2},
{ .pin = GPIO_PIN(PORT_E, 14), .cc_chan = 3},
{ .pin = GPIO_UNDEF, .cc_chan = 0} },
.af = GPIO_AF1,
.bus = APB2
}
}
@ PORT_E
port E
Definition periph_cpu.h:51
@ GPIO_AF1
use alternate function 1
Definition cpu_gpio.h:103
@ APB1
Advanced Peripheral Bus 1
Definition periph_cpu.h:79
@ APB2
Advanced Peripheral Bus 2
Definition periph_cpu.h:80

Definition at line 150 of file periph_conf.h.

◆ timer_config

const timer_conf_t timer_config[]
static
Initial value:
= {
{
.dev = TIM5,
.max = 0xffffffff,
.rcc_mask = RCC_APB1ENR1_TIM5EN,
.bus = APB1,
.irqn = TIM5_IRQn
}
}

Definition at line 40 of file periph_conf.h.

◆ uart_config

const uart_conf_t uart_config[]
static
Initial value:
= {
{
.dev = USART2,
.rcc_mask = RCC_APB1ENR1_USART2EN,
.rx_pin = GPIO_PIN(PORT_D, 6),
.tx_pin = GPIO_PIN(PORT_D, 5),
.rx_af = GPIO_AF7,
.tx_af = GPIO_AF7,
.bus = APB1,
.irqn = USART2_IRQn,
.type = STM32_USART,
.clk_src = 0,
}
}
@ PORT_D
port D
Definition periph_cpu.h:50
@ GPIO_AF7
use alternate function 7
Definition cpu_gpio.h:109
@ STM32_USART
STM32 USART module type.
Definition cpu_uart.h:38

Definition at line 59 of file periph_conf.h.