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

[复制链接]
5833|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函数就可以把数据打印到指定的数组,不需要重定向
 楼主| 注孤终 发表于 2021-8-26 16:16 | 显示全部楼层
那么如果要写到里面来重定向可以怎么做呢?

 楼主| 注孤终 发表于 2021-8-26 16:21 | 显示全部楼层
打印到数组,我是需要将数组里面的东西打印出来
sonicll 发表于 2021-8-26 16:26 | 显示全部楼层
注孤终 发表于 2021-8-26 16:21
打印到数组,我是需要将数组里面的东西打印出来

看不懂你的需求,打印到数组,然后再把数组打印出来,那最后到底打印到哪里?还是串口吗?
 楼主| 注孤终 发表于 2021-8-26 16:28 | 显示全部楼层
重定向到数组,打印出数组内容
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);
 楼主| 注孤终 发表于 2021-8-26 16:52 | 显示全部楼层
方法有很多,但目前我想要知道的是该如何在重定向函数中重定向到数组,我printf是读取的数组中的内容
sonicll 发表于 2021-8-26 17:00 | 显示全部楼层
注孤终 发表于 2021-8-26 16:52
方法有很多,但目前我想要知道的是该如何在重定向函数中重定向到数组,我printf是读取的数组中的内容 ...

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

int fputc(int ch, FILE *f)
{
    *ptr++ = ch;
    return ch;
}
 楼主| 注孤终 发表于 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
}
 楼主| 注孤终 发表于 2021-8-27 13:51 | 显示全部楼层
这里是写入,读出来该怎么办呢,串口直接发送缓冲区?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

70

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部