Progetto per Embedded Systems a.a. 2020-2021 - P1.
Utilizzo della libreria STM32-USB Host HID per il collegamento di un mouse attraverso un connettore USB OTG a una scheda STM32F407VG.
L'output del movimento del mouse è dato dall'accensione dei 4 led, uno per direzione.
- st-link
- toolchain GNU
arm-none-eabi
- gdb server per on-chip debug
- USB OTG adapter
- Mouse con cavo, compliant a USB 2.0
- Board STM32F4
- Repository
STM32CubeF4
- Copiare la cartella
STM32CubeF4
un livello su rispetto al path del makefile. Altrimenti, per configurarne il percorso, modificare la variabileSTM_DIR
sul makefile. -
make
- Verranno generate le cartelle
bin
, contenente i file in output alla compilazione tra cui il.elf
da flashare sulla scheda.dep
, contente i file.d
necessari alla tracciamento delle dipendenzeobj
, contente i file oggetto
- Avviare il gdbserver
-
make debug
-
continue
NOTA: Necessario STM32CubeIDE
-
Aprire STM32CubeIDE new → stm32 project
-
board selector → modello board selezioni e next
-
nome progetto c exec stm32cube
-
perif default mode yes
-
pinout → clear pinout
-
a → z
-
rcc → HSE → CRYSTAL
-
usb_otg_fs → mode hostonly e activate vbus
-
usb_host → human interface host hid
-
pc0 → gpio_output
-
usb_host → platform settings metti activatevbusfs gpio_output e PC0
-
(verifica clock 168 Mhz e 48 verso USB)
-
ctrl s e generate project
-
copia directory progetto appena generato nella directory WORKSPACE (dove sta progetto github e STM32F4) oppure devi cambiare le variabili relative a questi path nel makefile(sconsigliato perche ci da problemi poi su git se non abbiamo tutti il workspace organizzato allo stesso modo)
-
make prepare
-
Modificare
main.c
-
private includes:
#include "usbh_hid.h"
\ -
private macro:
#define MOUSE_COORD_THRESHOLD 5
#define MOUSE_INVERTED_AXIS 0
-
private user code:
Inserire codice callback -
in
mx_gpio init
aggiungere:
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pins : LD4_Pin LD3_Pin LD5_Pin LD6_Pin */
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-
-
make
-
avviare gdbserver
-
make debug
-
enjoy
- lcd
- pwm rgb
- led + descrittori
- tastiera
- documentazione
- flow-chart
- cubemx
- ambiente
- generazione progetto template e impatto sul codice
- debug (openocd vs gdbserver st-link)
- problemi mouse wireless
- alimentazione (indagare su voltaggio, in particolare 3.3V vs 5V)
- strutture dati (come mouse_info) possono dipendere da specifico device
- allineamento assi e wrap-around