إعادة توجيه STM32CubeIDE للطباعة (printf) وإخراج الأعداد العشرية
إعادة توجيه printf إلى المنفذ التسلسلي
usart.c
/* USER CODE BEGIN 0 */
#include "stdio.h"
/* USER CODE END 0 */
/* USER CODE BEGIN 1 */
// تعريف _write يوجد في syscalls.c وهو معرف باستخدام __weak، لذلك يمكن تعريفه مباشرة في ملفات أخرى
__attribute__((weak)) int _write(int file, char *ptr, int len)
{
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
while ((USART1->SR & 0X40) == 0); // انتظار الانتهاء من الإرسال
USART1->DR = (uint8_t) *ptr++;
}
return len;
}
/* USER CODE END 1 */
إخراج الأعداد العشرية في STM32CubeIDE
- في الشريط الجانبي لبرنامج STM32CubeIDE، حدد المشروع، ثم انقر بزر الماوس الأيمن واختر "خصائص" - "بنية C/C++" - "الإعدادات" - "MCU GCC Linker" - "متفرقات".
- في خانة "Other flags"، قم بإضافة مشروع جديد واكتب "-u_printf_float".
- قم بإعادة الترجمة.
مشكلة الأحرف العشوائية في HAL_UART_Receive_IT
يمكن حل مشكلة الأحرف العشوائية في HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10, 0xFFFF);
عن طريق تغيير عدد البايتات (10) إلى 1.
المراجع والشكر
- توجيه إخراج printf في STM32CubeIDE إلى المنفذ التسلسلي
- تغيير إخراج الأعداد العشرية في STM32CubeIDE printf والمنفذ التسلسلي (uart)
- الشكوك مجدداً بخصوص وظيفة HAL_UART_Receive_IT
عنوان النص: https://wiki-power.com/ يتم حماية هذا المقال بموجب اتفاقية CC BY-NC-SA 4.0، يُرجى ذكر المصدر عند إعادة النشر.
تمت ترجمة هذه المشاركة باستخدام ChatGPT، يرجى تزويدنا بتعليقاتكم إذا كانت هناك أي حذف أو إهمال.