. , , , arduino mbed. LCD ILI9341 STM32L476G DISCOVERY, - ST , mbed, . 27 fps.

ST Microelectronics , , , , . —
STM32L476G DISCOVERY. — 32 ARM 80MHz . , . LCD 320 240, SPI . , mbed,
.
Mbed — , , , mbed- , USB . , . -, mbed-. -, , mbed , , ST. , mbed, ( ) , . , , ,
- ST 10 .
. mbed , -. , DigitalOut . . DigitalOut PinName, — . DigitalOut , - — , . , DigitalOut main. , , . - , , main . ST ( HAL — hardware abstraction level) , , . - , , , . , ( ST C).
CubeMX, . — , .
mbed HAL ST, . , SPI ( )
spi_api.c. spi_init SPI , , init_spi, . 3 SPI
static SPI_HandleTypeDef SpiHandle;
. , , , , .
mbed . ST,
CubeMX. LCD ST , . — , mbed, , . — mbed . , , mbed LCD SPI. , . — , . —
wait_api.h. - . mbed . , , . , , — PinName, , , ( SPI), .
class PinName {
public:
PinName() : m_port(0), m_pin(0), m_obj(0) {}
PinName(GPIO_TypeDef* port, unsigned pin, void* obj = 0)
: m_port(port), m_pin(pin), m_obj(obj)
{
assert_param(m_port != 0);
}
GPIO_TypeDef* m_port;
unsigned m_pin;
void* m_obj;
static PinName not_connected;
};
. HAL, , inline, .
class DigitalOut {
public:
DigitalOut(GPIO_TypeDef* port, unsigned pin)
: m_port(port), m_pin(pin)
{
assert_param(m_port != 0);
}
DigitalOut(PinName const& N)
: m_port(N.m_port), m_pin(N.m_pin)
{
assert_param(m_port != 0);
}
void operator =(int bit) {
if (bit) m_port->BSRR = m_pin;
else m_port->BRR = m_pin;
}
private:
GPIO_TypeDef* m_port;
unsigned m_pin;
};
SPI ,
. , . . 16 , 8 , — 4 . , ,
compat.
.
, , .
LCD , . , — SPI, 10MHz, . , 40MHz — , 80MHz. , 100x100 . (, , ). — 11fps 32fps, , 16 . ,
. , , 16 . mbed API.
SPI , , , . , . SPI , . , , 27fps, .
. IAR Embedded Workbench for ARM 7.50.2. ST. , LCD
lcd.h.