Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: Murat Mert - 25 Temmuz 2020, 11:33:47

Başlık: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: Murat Mert - 25 Temmuz 2020, 11:33:47
S.A.
Daha önce MikroC Arm da register ile uart dma yapıyordum. Hal libi kullanara Register bitleri dmayı aktif pasif yapmak istedim olmadı bende hal lib içini inceliyerek şöyle bir yol izledim.

yollama kısmı


HAL_UART_Transmit_DMA(&huart2,(uint8_t*)tx_buffer, tx_say);


yollamam bitincede callback ile


void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){
if(huart->Instance == &huart2->Instance)
{
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
HAL_UART_DMAStop(&huart2);

uart_rcv_on();
    }


bu kodlarda sıkıntısız ve gayet güzel çalışıyor.
Beni rahatsız eden
HAL_UART_Transmit_DMA(&huart2,(uint8_t*)tx_buffer, tx_say);
burayı her göndermede kuracakmıyız. içinde baya rutinlere gidiyor.
MikroC Armda


DMA1_CNDTR7 =tx_say; // tx buffer de yollanacak miktar
DMA1_CCR7.EN = 1; // tx_dama yı aktif et

///kesme içindeki rutinleri yazmadım


Hal lib gördüğüm kadarıyla bir çok rutin ve errorleri içinde kontrol ediyor. Çalışmada sıkıntı yok ama hata yapma düşüncesi ile soruyorum. Kolay gelsin...
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: yldzelektronik - 25 Temmuz 2020, 22:43:10
İşlem bu kadar. Her göndermede evet aynı fonksiyonu çağırmanız gerekiyor. Kaldı ki, diğer geliştirme ortamında da her gönderim yapmak istediğinizde bu işlemi yapmak durumundasınız (En azından DMA yı tekrar başlatmak).

HAL birden fazla denetleyiciyi destekliyor. Ayrıca bir çok hata kontrolünü de kendi içinde yapıyor.

Eğer rahatsız ediyorsa sizi, kullandığınız denetleyici için STDPeriphLib kullanabilirsiniz (varsa)..
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: Murat Mert - 25 Temmuz 2020, 23:31:52
Alıntı yapılan: yldzelektronik - 25 Temmuz 2020, 22:43:10İşlem bu kadar. Her göndermede evet aynı fonksiyonu çağırmanız gerekiyor. Kaldı ki, diğer geliştirme ortamında da her gönderim yapmak istediğinizde bu işlemi yapmak durumundasınız (En azından DMA yı tekrar başlatmak).

HAL birden fazla denetleyiciyi destekliyor. Ayrıca bir çok hata kontrolünü de kendi içinde yapıyor.

Eğer rahatsız ediyorsa sizi, kullandığınız denetleyici için STDPeriphLib kullanabilirsiniz (varsa)..

Yanıtlar için teşekkürler. Rahatsızlık bilmedem mantık ile yapmak, başka bir rahatsızlığım yok. Kolay gelsin. :)
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: yldzelektronik - 26 Temmuz 2020, 10:59:35
Aslına bakarsanız HAL bu kadar fazla şeyi bana sormadan yapınca ben rahatsız oluyorum. Ama baştan yazmak ta istemiyorum. :)
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: LukeSkywalker - 26 Temmuz 2020, 12:11:11
Hazir kutuphane kullanmak rahatsiz ediyorsa dogru yoldasiniz demektir. Bu kutuphaneler uretici firmanin hazirladiklari olsa dahi.

Hal kutuphanelerini cozmek register okumaktan daha zor geliyor bana.
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: Murat Mert - 26 Temmuz 2020, 13:18:12
Alıntı yapılan: yldzelektronik - 26 Temmuz 2020, 10:59:35Aslına bakarsanız HAL bu kadar fazla şeyi bana sormadan yapınca ben rahatsız oluyorum. Ama baştan yazmak ta istemiyorum. :)

Evet aynen işte burada hazırı var gibi olmuş ama güzel bir şey.  :)
Başlık: Ynt: CubeIde HAL_UART_Transmit_DMA sorusu
Gönderen: Murat Mert - 26 Temmuz 2020, 13:41:48
Alıntı yapılan: LukeSkywalker - 26 Temmuz 2020, 12:11:11Hazir kutuphane kullanmak rahatsiz ediyorsa dogru yoldasiniz demektir. Bu kutuphaneler uretici firmanin hazirladiklari olsa dahi.

Hal kutuphanelerini cozmek register okumaktan daha zor geliyor bana.

Hocam MikroC Arm da kullanıyorum MikroC sayesinde register öğrendim datasheet'e bakmayı öğrendim. Hal libi çözmemede kolaylık sağladı... :)