STM32F4串口打印 while函数出错

总结:写while函数等类型的循环要添加“{ }”,不然不知道会出什么错误。

原函数:

void division_func(void)

{

char *p=NULL;

int i =0;

//如USART1接收到的字符串:2013-12-14

//以‘-’分割字符串,现在分割出的第一个字符串为:2013

p = strtok((char *)g_usart1_recv_buf,"-");

printf("分割:%d  %s\r\n", i++, p);

//继续分割

while((p=strtok(NULL,"-"))) 

printf("分割:%d %s\r\n", i++, p);

}

运行结果:有误

修改后:

void division_func(void)

{

char *p=NULL;

int i =0;

//如USART1接收到的字符串:2013-12-14

//以‘-’分割字符串,现在分割出的第一个字符串为:2013

p = strtok((char *)g_usart1_recv_buf,"-");

printf("分割:%d  %s\r\n", i++, p);

//继续分割

while((p=strtok(NULL,"-"))) 

    {

printf("分割:%d %s\r\n", i++, p);

    }

}

运行结果:正常

原文地址:http://blog.51cto.com/13502993/2062310

时间: 2024-10-08 08:40:17

STM32F4串口打印 while函数出错的相关文章

串口打印问题

串口打印的时候需要重新改变一个函数“int fputc(int ch,FILE *f”,如果有数据需要输出打印的时候,通过这个函数把数据送到串口上:而且还要进入keil软件的“options”功能,打开“target”选项卡,把“Use MicroLIB”勾选上才可以.通过这可以发现有时不一定是程序问题,还可能是软件配置不完整,还有可能是硬件的问题呢.

代码调试之串口打印

以前习惯用jlink调试代码,最近发现jlink老是出现问题,丢固件.无法仿真等等,甚是苦恼,无奈用串口打印的方式来替代jlink调试: 串口调试需要使用到半主机模式,具体的调用代码如下: #pragma import(__use_no_semihosting) struct __FILE { int handle; }; FILE __stdout; void _sys_exit ( int x ) { x = x; } int fputc ( int ch, FILE *f ) { whil

实战c++中的vector系列--使用sort算法对vector<unique_ptr<string>>进行排序(sort函数出错“应输入 2 个参数,却提供了 3 个)

之前博客写了对vector使用sort算法进行的排序,之前也写到过vector<unique_ptr<string>>的一些处理方法. 今天就写一下对vector<unique_ptr<string>>使用sort算法进行排序. #include<iostream> #include<string> #include<vector> #include<algorithm> #include<memory&

三种方法打印 main函数的返回地址的值(old EIP)(用途,你懂得!)

这里可以简单的修改任意函数的返回地址,可以做到自定义EIP的指向,即可执行当前进程空间的任意指令,这里只是让大家更清楚栈帧结构,没有涉及跨进程的inline HOOK 等,后面会陆续讲下读取任意进程内存,修改任意进程函数执行流程等方法. 废话不多说了,直接上菜: #include <stdio.h> #include <windows.h> /* 打印 main函数的返回地址的值(用途,你懂得!) 所需知识:函数栈帧结构 C调用约定,自右向左压栈 push argv push ar

串口相关的函数

要使能串口 1 的中断,同时设置抢占优先级为 1,子优先级位 2,初始化的方法是: USART_InitTypeDef USART_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口 1 中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1 NVIC_InitStructure.NVIC_IRQChannelSubPrior

[Php.ini]PHP调用mysql_connect()函数出错:Call to undefined function mysql_connect()

初学先用appserv或xampp集成安装包,这样可以不必为单独安装apahce/mysql/php而烦恼了. 最近我在自己搭建环境时,老是出现mysql扩展装不上.已经在php.ini里打开了extension=php_mysql.dll的扩展了.后来发现核心点是在WINDOWS系统下,需要的PHP目录下的:libmysql.dll和php5ts.dll 拷贝至:windows目录下的system32下! Fatal error: Call to undefined function mysq

C# Serial串口打印

项目中需要使用串口热敏打印机,所以研究一下串口打印. using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.IO.Ports; using System.Collections; using System.Windows.Forms; using System.Drawing; namespace PrinterTest { public class P

串口协议匹配函数,避免串口数据接收时顺序换乱错误

按照协议匹配,避免串口数据接收时顺序换乱错误. 包头 长度 地址码 回复状态 校验和 包尾 备注 C0C0 02 F5 AA YY CF 成功 1,转移字符 a)              数据包基本格式中的数据长度.数据和校验和中如果出现关键字C0. CF或CA则需要在其前端加上转义字符CA,即将数据C0.CF或CA发送成CAC0.CACF或CACA,将数据C0C0发送成CAC0CAC0. b)              数据包基本格式中的数据长度length以有效数据的数量为准,即不 需要也

PHP 打印调用函数入口地址(堆栈),方便调式

今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方法调用的,以及上一个方法又是哪个方法调用的,以此类推,找到入口地址多好啊.不过以前自己也想过,也在网上去搜过,就是没有找到相关的办法,今天一同事(前辈)说JAVA里面这种调试用得很普遍,叫这种堆栈调试,我是就在网上搜PHP堆栈.居然被我找到了,然后把自己的办法写出来. //调用堆栈函数,查找调用函数