打印

标准输出重定向到DMA内存地址

[复制链接]
5385|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
注孤终|  楼主 | 2021-8-26 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么标准输出重定向到DMA内存地址,就重定向到数组而不是重定向到串口

使用特权

评论回复
沙发
sonicll| | 2021-8-26 15:47 | 只看该作者
用sprintf函数

使用特权

评论回复
板凳
注孤终|  楼主 | 2021-8-26 15:56 | 只看该作者
不是,就是在int fputc()
{
     ……
}
函数中重定向到数组而不是写USART_SendData(DEBUG_USARTx, (uint8_t) ch);
               
                /* 等待发送完毕 */
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);               
       
                return (ch);

使用特权

评论回复
地板
sonicll| | 2021-8-26 16:04 | 只看该作者
注孤终 发表于 2021-8-26 15:56
不是,就是在int fputc()
{
     ……

直接用sprintf函数就可以把数据打印到指定的数组,不需要重定向

使用特权

评论回复
5
注孤终|  楼主 | 2021-8-26 16:16 | 只看该作者
那么如果要写到里面来重定向可以怎么做呢?

使用特权

评论回复
6
注孤终|  楼主 | 2021-8-26 16:21 | 只看该作者
打印到数组,我是需要将数组里面的东西打印出来

使用特权

评论回复
7
sonicll| | 2021-8-26 16:26 | 只看该作者
注孤终 发表于 2021-8-26 16:21
打印到数组,我是需要将数组里面的东西打印出来

看不懂你的需求,打印到数组,然后再把数组打印出来,那最后到底打印到哪里?还是串口吗?

使用特权

评论回复
8
注孤终|  楼主 | 2021-8-26 16:28 | 只看该作者
重定向到数组,打印出数组内容

使用特权

评论回复
9
sonicll| | 2021-8-26 16:45 | 只看该作者
注孤终 发表于 2021-8-26 16:28
重定向到数组,打印出数组内容

你看看这样行不行,先用sprintf打印到数组,再用printf打印数组,printf仍然重定向到usart

sprintf(buffer, "test number is %d \r\n", num);       
printf("%s", buffer);

使用特权

评论回复
10
注孤终|  楼主 | 2021-8-26 16:52 | 只看该作者
方法有很多,但目前我想要知道的是该如何在重定向函数中重定向到数组,我printf是读取的数组中的内容

使用特权

评论回复
11
sonicll| | 2021-8-26 17:00 | 只看该作者
注孤终 发表于 2021-8-26 16:52
方法有很多,但目前我想要知道的是该如何在重定向函数中重定向到数组,我printf是读取的数组中的内容 ...

如果非要在fputc函数里改,那就这样改,ptr指向你要的数组地址

int fputc(int ch, FILE *f)
{
    *ptr++ = ch;
    return ch;
}

使用特权

评论回复
12
注孤终|  楼主 | 2021-8-27 13:50 | 只看该作者
这样写了:
int fputc(int ch, FILE *f)
{
   temp = top+1;
  if(top==UART1_TX_LEN)
{
  top=0;
}
else if(top !=bot)
{
  UART1_TX_BUF[top]=ch;
}
return ch
}

使用特权

评论回复
13
注孤终|  楼主 | 2021-8-27 13:51 | 只看该作者
这里是写入,读出来该怎么办呢,串口直接发送缓冲区?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

70

帖子

0

粉丝