初级会员
- 积分
- 60
- 金钱
- 60
- 注册时间
- 2018-5-16
- 在线时间
- 11 小时
|
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
|
|