forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Posílání řetězce na uart

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM
 
Adam
Anonymní





PříspěvekZaslal: 17 duben 2015, 14:01    Předmět: Posílání řetězce na uart Citovat

ahoj, tenhle dotaz je spíše k Céčku než k ARMu, ale jelikož dělám na procesoru STM32F0, postu to sem. Jsem začátečník, jak v Céčku, tak v programování mikrokontrolérů. Mám aplikaci s AD převodníkem a hodnotu z něj si chci zobrazit na hyperterminálu (přes uart-usb převodník). Zatím umím poslat jen jeden znak pomocí

USART_SendData(USART2, 'x');

Můj dotaz je, jak poslat proměnou ADC1ConvertedValue (která má hodnotu třeba 3000) jako řetězec aby mi to ty 3000 ukázalo? Předem díky za odpovědi Smile
Návrat nahoru
 

 
hazardrok
Profesionál
Profesionál


Založen: 16.1.2012
Příspěvky: 131

PříspěvekZaslal: 17 duben 2015, 14:06    Předmět: Citovat

Ahoj, třeba ti alespoň trochu pomůže toto...
kód:

#include "string.h" 
void serial_transmitx(char *buffer, uint16_t pocet){
  uint16_t size = strlen(buffer);
  if(pocet != 0){ size = pocet;}
  while(size){
    while(!(DEBUG_UART_REG->SR & USART_CR1_TCIE));                              // wait while TX buffer full
    DEBUG_UART_REG->DR = *buffer;                                               // send single character to transmit buffer
    buffer++;                                                                   // transmit next character on following loop
    size--;                                                                     // loop until all characters sent (when size = 0)
    }
  while(DEBUG_UART_REG->SR & USART_CR1_TCIE);                                   // wait for last transmission to finish
  return;
  }

void print_number(int16_t cislo){
   char szNumber[12];
   itoa(cislo, szNumber, 10); 
   serial_transmitx(szNumber,0);
   serial_transmitx("\n",0);
   }

int16_t itoa(int16_t number, char* out, int16_t base){
   int16_t t, count;
   char *p, *q;
   char c;
 
   p = q = out;
   if(base < 2 || base > 36) base = 10;
 
   do{
     t = number;
     number /= base;
     if(out)
       *p = ALPHANUMS[t+35 - number*base];
     p++;
     }while (number);
 
   if(t < 0){
     if (out) *p = '-';
     p++;
     }
   count = p-out;
   if(out){
     *p-- = '\0';
     while(q < p){
       c = *p;
       *p-- = *q;
       *q++ = c;
       }
     }
   return count;
   }
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
hazardrok
Profesionál
Profesionál


Založen: 16.1.2012
Příspěvky: 131

PříspěvekZaslal: 17 duben 2015, 14:08    Předmět: Citovat

ještě by se ti mohlo hodit toto Smile
kód:

#define ALPHANUMS "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"
void serial_transmitx(char *buffer, uint16_t pocet);
void print_number(int16_t cislo);
int16_t itoa(int16_t number, char* out, int16_t base);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Adam
Anonymní





PříspěvekZaslal: 17 duben 2015, 14:10    Předmět: Citovat

Ok díky, projedu si to, snad z toho něco pochytim Very Happy
Návrat nahoru
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 472

PříspěvekZaslal: 17 duben 2015, 20:45    Předmět: Citovat

Přesměruj (přepiš) funkci putchar() - nahraď tou co umí odeslat ten jeden znak. V prostředí KEIL je na to soubor retarget.c Pak už můžeš používat prostě formátovaný výstup printf().
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
mares.vit
Účastník
Účastník


Založen: 19.9.2012
Příspěvky: 18

PříspěvekZaslal: 22 duben 2015, 9:57    Předmět: Citovat

Použijte nějakou minimalistickou implementaci funkce printf(). Třeba xprintf() od Elm-Chan.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)