انتقل إلى المحتوى

إعادة توجيه 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

  1. في الشريط الجانبي لبرنامج STM32CubeIDE، حدد المشروع، ثم انقر بزر الماوس الأيمن واختر "خصائص" - "بنية C/C++" - "الإعدادات" - "MCU GCC Linker" - "متفرقات".
  2. في خانة "Other flags"، قم بإضافة مشروع جديد واكتب "-u_printf_float".
  3. قم بإعادة الترجمة.

مشكلة الأحرف العشوائية في HAL_UART_Receive_IT

يمكن حل مشكلة الأحرف العشوائية في HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10, 0xFFFF); عن طريق تغيير عدد البايتات (10) إلى 1.

المراجع والشكر

عنوان النص: https://wiki-power.com/ يتم حماية هذا المقال بموجب اتفاقية CC BY-NC-SA 4.0، يُرجى ذكر المصدر عند إعادة النشر.

تمت ترجمة هذه المشاركة باستخدام ChatGPT، يرجى تزويدنا بتعليقاتكم إذا كانت هناك أي حذف أو إهمال.