OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3111|回复: 6

为啥串口打印函数不能打印数组里的全部元素

[复制链接]

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
发表于 2018-9-25 15:24:03 | 显示全部楼层 |阅读模式
5金钱
各位大神好,希望伸出援手帮助小弟解决问题。问题我用串口打印函数打印数组的内容,一个元素一个元素打印可以实现,想一次把所有元素都打印出来不行?代码如下希望大神和版主帮忙解决。

串口打印函数代码:
__align(8) u8  USART2_TX_BUF[USART2_TXBUFF_SIZE];          //串口2发送区

/*-------------------------------------------------*/
/*函数名:串口2printf                              */
/*参  数:无                                       */
/*返回值:无                                       */
/*-------------------------------------------------*/
void u2_printf(char* fmt,...)  
{  
        u16 i,length;
        va_list ap;
        va_start(ap,fmt);
        vsprintf((char*)USART2_TX_BUF,fmt,ap);
        va_end(ap);
       
        length=strlen((const char*)USART2_TX_BUF);       
        while((USART2->SR&0X40)==0);
        for(i = 0;i < length;i ++)
        {                       
                USART2->DR = USART2_TX_BUF;
                while((USART2->SR&0X40)==0);       
        }       
}


主函数:
char a[5] = {'a','b','2','3','4'};
int main(void)
{               
        delay_init();                        //延时初始化
        Usart2_init(115200);        //串口2初始化       
        GPIO_Configuration();       //以太网接口配置
        NVIC_Configuration();       //以太网中断配置
        Ethernet_Configuration();   //以太网配置
       TIM3_Init(100,7200);            //10ms的延时
        MylwIP_Init();                    //初始化lwip启动前的事宜
        UDP_client_init(server_ip,server_port);   //UDP客户端初始化
        u2_printf("%c",a);                           //小弟是此处用法不对么?


        while (1)                                        //此处设置断点串口助手打印出的现象如下图
        {   
                if(udp_demo_flag&1<<6)//是否收到数据?
                {
                       
                        u2_printf("%c",a);
                        u2_printf("%c",a[0]);
                        u2_printf("%c",a[2]);
//                        LCD_Fill(30,250,lcddev.width-1,lcddev.height-1,WHITE);//清上一次数据
//                        LCD_ShowString(30,250,lcddev.width-30,lcddev.height-230,16,udp_demo_recvbuf);//显示接收到的数据                       
                        udp_demo_flag&=~(1<<6);//标记数据已经被处理了.
                }
                lwip_periodic_handle(); //lwIP周期处理任务
        }

}
串口助手显示:在while中第一个打印显示“横杠”,一个一个打印显示的对,小弟想把数组中的元素一次都打印出来,试了好多次也不行,希望大神帮助,小弟先在此谢谢各位了。
开发板静态IP地址:  192.168.0.30
开发板子网掩码地址:255.255.255.0
开发板网关地址:    192.168.0.1

a2
a2
a2
a2
开发板静态IP地址:  192.168.0.30
开发板子网掩码地址:255.255.255.0
开发板网关地址:    192.168.0.1





最佳答案

查看完整内容[请看2#楼]

%c错了,它是单个字符,%s试试
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2018-9-25 15:24:04 | 显示全部楼层
%c错了,它是单个字符,%s试试
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-9-25 15:39:24 | 显示全部楼层
看程序只打印了a[0]  a[2]  ,a=a[0]
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
 楼主| 发表于 2018-9-25 16:06:57 | 显示全部楼层
peng1554 发表于 2018-9-25 15:39
看程序只打印了a[0]  a[2]  ,a=a[0]

为啥打不全呀
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
 楼主| 发表于 2018-9-25 16:07:37 | 显示全部楼层
a5820736 发表于 2018-9-25 15:35
%c错了,它是单个字符,%s试试

我一开始定义的是u8 类型的数组
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
 楼主| 发表于 2018-9-25 16:09:22 | 显示全部楼层
a5820736 发表于 2018-9-25 15:35
%c错了,它是单个字符,%s试试

我后边试试
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
 楼主| 发表于 2018-9-26 11:45:11 | 显示全部楼层
a5820736 发表于 2018-9-25 15:35
%c错了,它是单个字符,%s试试

谢谢您!真是您说的这样子,太感谢您了。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 07:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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