سلام دوستان
من با استفاده از تایمر stm32 یه کلاکی تولید میکنم برای کار با یه سنسور نوری و اطلاعاتی که از سنسور میاد داخل میکرو رو با usart میفرستم برای کامپیوتر . کلاک رو با صفر و یک کردن یک پین خروجی در روتین وقفه تایمر تولید میکنم . زمانی که کلاک در حدود مثلا 5Khz هست usart با baudrate 57600 اطلاعات را بخوبی برای کامپیوتر ارسال میکنه اما وقتی کلاک رو افزایش میدم مثلا به 500Khz ، یوزارت نمیتونه ارسال رو انجام بده و تو دستور
while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE)) ;
گیر میکنه.
چطور میتونم این مشکلو حل کنم؟ اصن اینا چه ربطی به هم دارن؟ چون من اطلاعات رو میریزم داخل یک آرایه و تا وقتی آرایه رو کامل از طریق یوزارت ارسال نکردم اطلاعات جدید رو داخلش نمیریزم. ینی ممکنه این وقفه تایمر که حالا سرعتش زیاد شده وسط کار ارسال یوزارت مشکل بوجود بیاره؟