مشکل در تعریف دستور printf

سلام استاد وقتتون بخیر.
به همون صورتی که فرموده بودین و مشابه فایل پروژه کدهای فایل printf.txt رو توی برنامه کپی کردم ولی متاسفانه دستور printf کار نمیکنه.
از دستور HAL_UART_Transmit به همراه sprintf استفاده کردم و مشکلی نداشت و خروجی رو در realterm داشتم.اما دستور printf کار نمیکنه .
printf

با سلام
منظورتون از کار نمیکنه چه چیزی هستش؟ دیتا رو دارید اما بی معنا هست یا دیتایی ندارید؟ اگر دیتا رو دارید اما بی معنا هست باید تنظیمات uart مثل baud rate رو چک کنید که در کامپیوتر و میکرو یکسان باشد. اما اگر دیتایی در realterm نمیبینید احتمالا یکی از مراحل رو درست انجام ندادید اما عکستون برای فهمیدن مشکل کافی نیست. دوباره چک کنید و اگر مشکل وجود داشت عکس کامل ترب از پیاده سازیتون بذارید که بشه مشکل رو پیدا کرد.

نه کلا دیتایی ندارم.بادریت درسته .گفتم که با دستور HAL_UART_Transmit دیتا بدون مشکل ارسال میشه.یعنی تنظیمات و اتصالات درسته.
اما دستور printf دیتا رو به خروجی نمیده.کد تا printf میاد و اونجا گیر میکنه.دستورات بعد از printf اجرا نمیشن.کد و مراحل هم دقیقا همونی هست که خودتون اجرا کردید.
کد و عکس از اتصالات رو میفرستم.
IMG_20230402_192509_1
uart-printf.rar (646.4 کیلوبایت)

کنار GNUC همینطوری ی حرف الکی a گذاشتم که شرط ifdef# غلط و شرط else# برقرار بشه.و مشکل حل شد! چرا اینطور شد؟سرچ کردم فکر کنم مربوط به کامپایلر و این چیزا میشه ولی دقیق نفهمیدم مشکل از کجاست.
llhgfhjgjvjvjhvjhvjhvjhv

با سلام
تعریف PUTCHAR_PROTOTYPE در این دوحالت متفاوت هست. در پروژه ای که در آموزش ها ساخته شد GNUC جزو define ها نبوده و به همین دلیل قسمت دوم اجرا میشده اما احتمالا در پروژه شما بوده. (میتونید چیزهایی که define شده رو از مسیر Flash->configure flash Tools-> C/C در قسمت Compiler control string) ببینید.