硬汉嵌入式论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: eric2013
收起左侧

[IAR] IAR9.X printf串口底层重定向方法,否则提示Linker Error: "no definition for __write"

  [复制链接]

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2023-9-8 14:54:14 | 显示全部楼层
eric2013 发表于 2023-9-8 14:05
单独仅开另一个串口是否正常。

使用你的驱动,两个串口单独使用都是正常的,两个都开,printf函数就是乱码,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-9-9 01:50:30 | 显示全部楼层
Aaron_EE 发表于 2023-9-8 14:54
使用你的驱动,两个串口单独使用都是正常的,两个都开,printf函数就是乱码,

方便的话,分享代码到百度云看下。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2023-9-10 00:43:30 | 显示全部楼层
eric2013 发表于 2023-9-9 01:50
方便的话,分享代码到百度云看下。

谢谢,问题解决了,使用hal库L0的初始化、中断处理不太一样,现在DMA还没通,我再看文档跟踪一下寄存器
回复

使用道具 举报

59

主题

282

回帖

459

积分

高级会员

积分
459
发表于 2023-9-14 16:21:49 | 显示全部楼层
使用fputc软件编译能通过啊
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2024-3-7 12:28:38 | 显示全部楼层
我也遇到这个问题,按照楼主的方法解决了发送乱码问题。
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2024-3-7 12:29:18 | 显示全部楼层
// 不可缺少!
#pragma module_name = "?__write"

size_t __write(int handle, const unsigned char * buffer, size_t size)
{
    size_t nChars = 0;

    if (buffer == 0)
    {
    //
     // This means that we should flush internal buffers.  Since we
     // don't we just return.  (Remember, "handle" == -1 means that all
     // handles should be flushed.)
    return 0;
    }

    // This template only writes to "standard out" and "standard err",
    // for all other file handles it returns failure.
    if (handle != _LLIO_STDOUT && handle != _LLIO_STDERR)
    {
        return _LLIO_ERROR;
    }

    for (; size != 0; --size)
    {
        TerminalSerial_WrByte(*buffer++);
        //  if (TerminalSerial_WrByte(*buffer++) < 0)
        //  {
        //    return _LLIO_ERROR;
        //  }

        ++nChars;
    }
  return nChars;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 02:19 , Processed in 0.178369 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表