Visualizzazione post con etichetta STM32CubeMX. Mostra tutti i post
Visualizzazione post con etichetta STM32CubeMX. Mostra tutti i post

giovedì 22 agosto 2019

USB seriale su STM32 Nucleo F302RB

Per inviare dati seriali sulla porta USB (collegata ad STLink) si devono prima attivare i pin tramite Cube MX e si devono configurare i parametri di trasmissione di USART2 (in questo caso 9600 8N1)


       
fatto cio' si apre il progetto e si trova gia' configurata la porta huart2 su cui trasmettere un buffer di caratteri

char buffer[12];

..........

HAL_UART_Transmit(&huart2,buffer,strlen(buffer),HAL_MAX_DELAY);
char newline[2] = "\r\n";
HAL_UART_Transmit(&huart2,(uint8_t *) newline,2,HAL_MAX_DELAY);


martedì 13 agosto 2019

CubeMX e SW4STM32 AC6


Per creare un progetto STM32 si parte da CubeMX con New Project e selezionando la scheda di sviluppo


e' piu' comodo usare il tab board selector al posto di MCU/MPU  selector

Se la scheda e' ancora stato scaricato il pacchetto di configurazione della scheda il software effettua il download. Una volta scaricato il pacchetto nel repository di CubeMX saranno presenti anche degli esempi per l'utilizzo della scheda

Per esempio su Windows il repository si trova in

C:\Users\PC\STM32Cube\Repository\

mentre gli esempi sono nelle sottodirectory ordinate per classe di scheda

C:\Users\PC\STM32Cube\Repository\STM32Cube_FW_F7_V1.15.0\Projects\STM32746G-Discovery\Examples

Gli esempi vengono presentati in diverse directory a seconda dell'IDE (quindi usando AC6 si usera' la directory SW4STM32)

Prima di premere il pulsante Generate Code si deve selezionare Toolchain/IDE a SW4STM32


successivamente si deve copiare il percorso della Project Location

A questo punto si puo' aprire SW4STM32 e aprire il progetto da Open File from File System selezionando la directory

In SW4STM32 si possono importare anche librerie in C standard. Nel progetto basta trascinare i file nel ramo del progetto e poi settare la nuova path nelle proprieta' del progetto (nel caso di esempio mini-gmp, una versione ridotta di GMPLib)...ovviamente se si vogliono importare librerie binarie queste devono essere gia' compilate per ARM




giovedì 28 febbraio 2019

User Button su STM32 Nucleo 64 con AC6 System Workbench

Ripartendo da questo post qui si studia l'interazione con lo User Button della STM32F446RE





Se l'utente preme lo User Button viene cambiato lo stato del led LD2



-------------------------------------------------------------
 while (1)
  {
  if (!HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)) {
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  }
  HAL_Delay(100);
  /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
-------------------------------------------------------------

mercoledì 27 febbraio 2019

Blink Led su STM32 Nucleo 64 con AC6 System Workbench

Non riuscendo ad installare una IDE funzionante su Linux sono passato a Windows e le cose sono migliorate (anche se non e' una passeggiata)

In questo esempio viene mostrato come lanciare un programma per far lampeggiare il led su una scheda STM32F446RE Nucleo 64 utilizzando STM32CubeMX per impostare il progetto di base, AC6 SystemWorkbench per compilare e debuggare il codice



Si installa la IDE AC6 System Workbench con la toolchain GCC da http://www.openstm32.org/HomePage. Si tratta di una versione di Eclipse con i plugin gia' installati e con GCC, GDB per Arm ed i driver STLink inclusi




In seguito  si crea un nuovo progetto in STM32CubeMX
Si seleziona Start my project from STBoard, nella finestra di ricerca si digita Nucleo e si seleziona NUCLEO-F446RE. Nel caso in cui il firmware della scheda non sia mai utilizzato si dovra' scaricare (e' un pacchetto corposo)

Si fa doppio clic sulla foto della scheda e si risponde yes ad Initialize all peripherals.
Si va in Project Manager, si sceglie un nome per il progetto e nella ToolChain/IDE si indica SW4STM32.


Si apre in progetto e nel ciclo while (1) riga 99 si inserisce il codice. I progetti creati con STNM32CubeMX sono generati con le librerie HAL (un layer di astrazione sull'hardware...ci sono commenti discordanti sull'utilizzo di questo sistema)
---------------------------------------------------------
  while (1)
  {
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
---------------------------------------------------------

da STM32CubeMX si vede che la porta GPIO a cui e' collegato al porta denominata LD2_GPIO con il nome del pin denominato LD2_Pin
Il comando TooglePin cambia semplicemente lo stato del Pin (se e' attivo lo disattiva e l'ovvio contrario)

Si fa collega la scheda alla porta USB ed abbbiamo il programma in funzione, L'aspetto piu' interessante e' il fatto di poter eseguire un debug step by step del codice

Per concludere segnalo che il codice di base di STM32CubeMX abilita la porta seriale UART2. Per inviare messaggi sulla porta seriale via USB e' sufficiente

---------------------------------------------------------
char *msg = "Test\n\r";
HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFFFF);
---------------------------------------------------------

I parametri sono di default 115200 8N1 ma si possono modificare nella funzione MX_USART2_UART_Init contenuta in main.c

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...