CubeIde HAL_UART_Transmit_DMA sorusu

Başlatan Murat Mert, 25 Temmuz 2020, 11:33:47

Murat Mert

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...
mert07

yldzelektronik

İş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)..
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Murat Mert

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. :)
mert07

yldzelektronik

Aslına bakarsanız HAL bu kadar fazla şeyi bana sormadan yapınca ben rahatsız oluyorum. Ama baştan yazmak ta istemiyorum. :)
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

LukeSkywalker

Hazir kutuphane kullanmak rahatsiz ediyorsa dogru yoldasiniz demektir. Bu kutuphaneler uretici firmanin hazirladiklari olsa dahi.

Hal kutuphanelerini cozmek register okumaktan daha zor geliyor bana.

Murat Mert

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.  :)
mert07

Murat Mert

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ı... :)
mert07