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...
İş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)..
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. :)
Aslına bakarsanız HAL bu kadar fazla şeyi bana sormadan yapınca ben rahatsız oluyorum. Ama baştan yazmak ta istemiyorum. :)
Hazir kutuphane kullanmak rahatsiz ediyorsa dogru yoldasiniz demektir. Bu kutuphaneler uretici firmanin hazirladiklari olsa dahi.
Hal kutuphanelerini cozmek register okumaktan daha zor geliyor bana.
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. :)
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ı... :)