https://github.com/spacemonochrome/stm32_uart_transceiver_transformation
STM32'de UART üzerinden veri gönderilmek istenirse veriler arasında dönüşümde yazılacak kodları burada paylaşacağım.
https://github.com/spacemonochrome/stm32_uart_transceiver_transformation
clang conversion printf sprintf stm32 uart
Last synced: about 2 months ago
JSON representation
STM32'de UART üzerinden veri gönderilmek istenirse veriler arasında dönüşümde yazılacak kodları burada paylaşacağım.
- Host: GitHub
- URL: https://github.com/spacemonochrome/stm32_uart_transceiver_transformation
- Owner: spacemonochrome
- Created: 2024-06-04T21:09:11.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-06-16T08:42:02.000Z (11 months ago)
- Last Synced: 2025-02-12T11:53:36.824Z (3 months ago)
- Topics: clang, conversion, printf, sprintf, stm32, uart
- Homepage:
- Size: 1.95 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# STM32 - C dilinde UART Transmit dönüşümleri
Burada En kolay ve en pratik uart transmit dönüşümünü anlatmaya çalışacağım
## Kullanım/Örnekler
UART üzerinden bilgiler uint8_t formatında gönderilir. STM32CubeIDE'de bu çalışmanın tanımlanabilir olması için sol üstten **Project > Proporties > C/C++ Build > Settings > MCU Settings** kısmından **use float with printf from new libnano** aktif olması gerekmektedir.
Aşağıdaki örnekte String olarak '1' '2' '3' yani 49 50 51 gönderilir.
```c
uint8_t buffer[3] = "123";
HAL_UART_Transmit(&huart1, buffer, 10, 200);
```------------
Aşağıdaki örnekte küsüratlı bir sayı olan virgüllü bir sayı virgülsüz olarak dönüştürülür ve gönderilir. ve snprintf komutu ile buffer değeri aşağıdaki değere dönüşür.
buffer = { "1" , "2", "3" , "4" , "5", "6" ,"7" , "8", "9" ,"1" }
```c
double virgullu = 12.34567891;
char buffer[10];
snprintf(buffer, 10, "%f", virgullu);
// snprintf'deki 2. parametre (10) uzunluğu belirtir.
//burada buffer char veri tipindendir. uint8_t'ye çevirilmesi gerekir
HAL_UART_Transmit(&huart1, (uint8_t*)buffer, 10, 200);
// artık buffer = { "1" , "2", "3" , "4" , "5", "6" ,"7" , "8", "9" ,"1" } olarak veriler gönderilmiştir
```------------
Aşğaıdaki örnekte eldeki bilgiyi göndermiş olmaktayız.
```c
char data[80] = 0x0a // dizideki her boşluğu \n ile doldurmak için 0x0a koyduk;
char buffer[2];
buffer[0] = '1';
buffer[1] = '2'
sprintf(data, "Giden %c%c", buffer[0],buffer[1]);
//sprintf'de snprintf'deki olduğu gibi uzunluk belirtmemize gerek yoktur.
HAL_UART_Transmit(&huart1, (uint8_t*)data, 80, 200);
// Giden 12
```------------
Peki ya elimizde sayısal bir veri var ise o zaman nasıl yapacağız.
```c
char data[80] = 0x0a // dizideki her boşluğu \n ile doldurmak için 0x0a koyduk;
char buffer[2];
uint8_t sayi = 12;
sprintf(data, "Giden %c", sayi);
//uint8_t'deki sayısal değer chara dönüştürülür
HAL_UART_Transmit(&huart1, (uint8_t*)data, 80, 200);
// Giden 12
```