Skocz do zawartości

gustawdaniel

Użytkownicy
  • Zawartość

    4
  • Rejestracja

  • Ostatnio

Posty napisane przez gustawdaniel


  1. Propozycja poprawki:

    Zarówno w kodach: "Włączenie przetwornika ADC i kalibracja" jak i "STM32 - pomiar napięcia zewnętrznego" mamy linie:

    gpio.GPIO_Pin = GPIO_Pin_3;
    gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &gpio);

    Jeśli dobrze rozumiem wcześniejsze części to są one niepotrzebne, bo ten pin i mod służą przyjmowaniu przez mikro kontroler sygnałów przez USB przychodzących z komputera. 

    Podobnie jak włączanie zegarów dla wszystkich portów GPIO można by zastąpić włączeniem ich tylko dla jednego, którego używamy.

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    Czy rozwiązanie dla zadania 6.1 to 1.007 MHz?


  2. Dla użytkowników systemu Linux. 

    Żeby sprawdzić gdzie montuje się wasze urządzenie możecie skorzystać z instrukcji https://askubuntu.com/a/408831/614907

    U mnie była to ścieżka /dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_066FFF494849887767072607-if02

    Do czytania danych wysłanych przez mikrokontoler można użyć zarówno programu cat (zwykły tekst) jak i xdd (wygodny dla danych binarnych)

    Na przykład:

    cat /dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_066FFF494849887767072607-if02

    Znalezienie tego zajęło mi dużo czasu, być może ten komentarz go komuś oszczędzi.

    UPDATE:

    Do wysyłania danych można oczywiście używać przekierowań takich jak echo "a" > /dev/serial/... ale wygląda na to, że takie coś załącza jakiś dodatkowy znak końca strumienia danych, żeby tego uniknąć napisałem w node.js program który przechwytuje klawisze z klawiatury i wysyła na ten adres. W tym programie problem problem znaku kończącego zapis nie występuje, ale z chęcią dowiem się czy ktoś nie zna prostszego sposobu.

    /**
     * Script reads keys from keyboard and redirects them to usb device
     * We assume that device with usb communication is located in path
     * described in constant `file`.
     *
     * Usage: 
     * connect STM32 with program from example "Data receiving" from Forbot Course
     * first conosle: cat /dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_066FFF494849887767072607-if02 
     * second console: node app.js
     * Start typing in second console, you should see responses from microcontroller in first console
     * 
     * It is possible that id of your device will be different, them use methods described on link:
     * https://askubuntu.com/a/408831/614907
     * to detect youd device path
     *
     * Daniel Gustaw <gustaw.daniel@gmail.com>
     *
     * Sat Mar 16 20:54:45 CET 2019
     *
     * Recommended tutorials:
     * https://forbot.pl/blog/kurs-stm32-5-komunikacja-z-komputerem-uart-id8439
     * https://thisdavej.com/making-interactive-node-js-console-apps-that-listen-for-keypress-events/
     * https://dustinpfister.github.io/2018/08/17/nodejs-filesystem-create-write-stream/
     * https://askubuntu.com/a/408831/614907
     */
    const readline = require('readline');
    const fs = require('fs');
    const file = '/dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_066FFF494849887767072607-if02';
    
    let writer = fs.createWriteStream(file); // stream that allow redirect characters
    
    readline.emitKeypressEvents(process.stdin); // enable listening
    process.stdin.setRawMode(true); // listen for all keys (without confirming by enter)
    process.stdin.on('keypress', (str, key) => { // listen on pressing keys
        if (key.ctrl && key.name === 'c') { // allow for closing connection by ctrl+c
            process.exit(); // close process
        } else {
            console.log(`You pressed the "${str}" key`); // log info what you pressed
            writer.write(str); // send this key to stream
        }
    });
    console.log('Press any key...');

     

    • Lubię! 1
×
×
  • Utwórz nowe...