اطلاعیه

Collapse
No announcement yet.

پر نشدن آرایه های بافر از صفر در USART DMA

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پر نشدن آرایه های بافر از صفر در USART DMA

    سلام
    خلاصه کنم سرتونو درد نیارم حرفه ای نیستم در کد زنی.
    میکرو : stm32f103 ، توسعه دهنده : keil ، دستگاه مخاطب : sim800l
    ارتباط سریال رو با USART DMA گرفتم ،
    }int main(void)
    Codes
    HAL_UART_Receive_DMA(&huart,,*buffer,,120)
    }while(1)
    codes
    {memset(buffer,0,120)
    مد قرائت circular هست و نیازی به بازخوانی تابع نداره.

    مشکلم اینه که وقتی آرایه های بافر رو با دستور memset(buffer,0,120) تخلیه به صفر میکنم اطلاعات جدید از آخرین آرایه ای که پر شده بوده قبلا شروع به نشستن در آرایه های بافر میکنه ، همانطور که مشخصه از دستوری که نوشتم سایز بافرم 120 هست و اطلاعات رو با Stmstudio مانیتور میکنم.
    مثلا دستگاه زنگ میخوره تا آرایه 8 پر میشه و من بافر رو تخلیه میکنم با دستوری که بالاتر گفتم. پیام میفرستم میبینم اطلاعات بجای اینگه از آرایه صفر شروع به پر شدن کنه از آرایه 9 شروع به درج روی بافر میکنه.
    یا مثلا پیامی رو تحلیل کردم بعد آرایه های بافر رو تخلیه کردم با memset(buffer,0,120) مثلا تا آرایه 100 پر شده حالا بجای اینکه بره از آرایه صفر شروع کنه از 101 شروع به پر شدن میکنه دوباره تا سرریز شه.
    از توابع HAL_Init , HAL_Deinit , HAL_Abort و غیره هم استفاده کردم اما جواب نگرفتم هنوز.
    کمک !
    جدیدترین ویرایش توسط aziz66; ۱۱:۰۱ ۱۴۰۱/۰۱/۲۳.
لطفا صبر کنید...
X