2012年10月6日

清空输入缓存的方法

摘要: 缓存的清空方法1、fflush(stdin)这个可以很好得解决问题,但不是可移植的。MSDN文档里清楚地写着fflushoninputstreamisanextensiontotheCstandard(fflush操作输入流是对C标准的扩充),也就是说不是所有的编译器都支持这么用。VC是支持的,如果不用考虑程序的移植性,用fflush(stdin)也没什么大问题。2、读字符清空如果不能用上面的方法,还可以考虑:while(getchar()!='\n');即一直读缓冲区,直到换行为止。这个方法如果用在数字的输入后是很有效的,如果本来希望输入数字,但是不小心在数字后面键入了个字母 阅读全文

posted @ 2012-10-06 15:46 lxjsailor 阅读(424) 评论(0) 推荐(0) 编辑

c中的标准io函数

摘要: 1、printf与scanf特征参数返回值printf略略打印的字符数scanf读取数字:①跳过空白字符,读取符号字符或数字字符,直到费数字字符将②将数字后读到的那个空白字符放回输入③未能读入指定的输入时,就留下这个字符,下次读取,而不会无视它读取字符串:①忽略开始的空白字符,读取一个字符串,直到遇到空字符②将字符串后读到那个空白字符放回输入③在读出的“字符串”后加上'\0'称为一个真正的字符串读取字符:所有字符一视同仁,空白字符也一样略①成功读入的项目的个数②没有读取任何项目则为0,检测到文件结尾则返回EOF2、单字符IO:putchar与getchar很简单,与putc、g 阅读全文

posted @ 2012-10-06 15:44 lxjsailor 阅读(392) 评论(0) 推荐(0) 编辑

清除输入缓冲区

摘要: 1、fflush(stdin)这个可以很好得解决问题,但不是可移植的。MSDN文档里清楚地写着fflushoninputstreamisanextensiontotheCstandard(fflush操作输入流是对C标准的扩充),也就是说不是所有的编译器都支持这么用。VC是支持的,如果不用考虑程序的移植性,用fflush(stdin)也没什么大问题。2、读字符清空如果不能用上面的方法,还可以考虑:while(getchar()!='\n');即一直读缓冲区,直到换行为止。这个方法如果用在数字的输入后是很有效的,如果本来希望输入数字,但是不小心在数字后面键入了个字母,这个方法能很 阅读全文

posted @ 2012-10-06 14:39 lxjsailor 阅读(331) 评论(0) 推荐(0) 编辑

2012年9月25日

C中的常用IO函数

摘要: 1、printf与scanf特征参数返回值printf略略打印的字符数scanf读取数字:①跳过空白字符,读取符号字符或数字字符,直到费数字字符将②将数字后读到的那个空白字符放回输入③未能读入指定的输入时,就留下这个字符,下次读取,而不会无视它读取字符串:①忽略开始的空白字符,读取一个字符串,直到遇到空字符②将字符串后读到那个空白字符放回输入③在读出的“字符串”后加上'\0'称为一个真正的字符串读取字符:所有字符一视同仁,空白字符也一样略①成功读入的项目的个数②没有读取任何项目则为0,检测到文件结尾则返回EOF2、单字符IO:putchar与getchar很简单,与putc、g 阅读全文

posted @ 2012-09-25 14:11 lxjsailor 阅读(182) 评论(0) 推荐(0) 编辑

2012年9月24日

stm32的flash编程

摘要: 有时需要存储一些数据,在复位后仍然不会丢失,这可能就会用到片上flash,stm32的片上flash结构见stm32的存储器与复位。对flash的编程逻辑上是比较简单的,《flash编程手册》上写的很清楚,3.5固件库给出的例程为:FLASH_UnlockBank1();FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASHStatus=FLASH_ErasePage(0x0803F800);//擦除整页FLASHStatus=FLASH_ProgramHalfWord(0x0803F800, 阅读全文

posted @ 2012-09-24 17:16 lxjsailor 阅读(963) 评论(0) 推荐(0) 编辑

2012年9月5日

循环冗余校验CRC

摘要: 网上搜到的内容不全面,维基百科讲的比较好,原理很清楚传送门。其实对于程序员来讲,不用太在意它的数学原理,另外生成码的选择不是随意的,这可能影响到校验的性能。注意其中的加法不进位,减法不借位,类似是异或逻辑。关于怎样产生CRC,有这样一个算法:下面为CRC的计算过程: 1.设置CRC寄存器,并给其赋值FFFF(hex)。 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 5.重复第3... 阅读全文

posted @ 2012-09-05 21:23 lxjsailor 阅读(288) 评论(0) 推荐(0) 编辑

2012年9月4日

c中的常量

摘要: 前两天和冬哥讨论100这样的常量能不能取地址,当时我认为可以,后来查了一些资料,整理成这篇文章,总结关于c语言中关于常量的存储及表示的内容。有三种常量,存储各有不同特点:1、类似于汇编中的立即数的常量;2、不能更改的带const修饰符的量;3、字符串常量一、立即数 这种类型可能有不同的处理方法,较为简单的数可能直接放到指令中去,复杂一点的数就放在静态数据区里。以下是一本教材的一段话,我找到的关于这个内容的资料只有这么一段《编译原理及实践教程》 P168,黄贤英,清华大学出版社: “在组织全局/静态数据区时,出现的一个问题是它设计编译时已知的一些常量,包括C和Pascal中用const声明及代码 阅读全文

posted @ 2012-09-04 15:44 lxjsailor 阅读(383) 评论(0) 推荐(1) 编辑

2012年9月2日

各种接口

摘要: 一、DB9与DB25九针串口 串口是计算机主要的外部接口之一,通过九针串口连接的设备有很多,像串口鼠标、MODEM、手写板等等,九针串口的示意图如上,其各脚的定义如下:1 DCD 载波检测 2 RXD 接收数据3 TXD 发送数据4 DTR 数据终端准备好5 SG 信号地线6 DSR 数据准备好7 RTS 请求发送8 CTS 清除发送 9 RI 振铃指示二十五针串口 二十五针串口的作用与九针串口是相同的,二十五针串口在早期的电脑上曾用来连接纸带机、MODEM等,并可以用来联机交换数据,因为体积较大,作用又单一,所以如今的主板上已经找不到二十五针串口了。二十五针串口针脚定义如下:1 未用 2 T 阅读全文

posted @ 2012-09-02 20:13 lxjsailor 阅读(313) 评论(0) 推荐(0) 编辑

2012年8月26日

stm32模拟iic——引脚配置、代码

摘要: 我的工程里要用到iic总线扩展rom,stm32是有硬件iic的,但是,网上有很多人说这个硬件iic有漏洞,甚至于有bug。http://bbs.21ic.com/icview-184741-1-1.htmlhttp://blog.gkong.com/more.asp?name=zjcsharp&id=112878。《例说stm32》的表述是:“非常复杂,不太好用”。那么我判断这个硬件iic可能确实有不足,因此选择直接用软件模拟出iic。在做的过程中,遇到几个问题,记录下来。1、引脚的模式与配置iic的两个引脚SDA与SCL都要求既能输出又能输入。这对stm32来说问题不大,由参考手册 阅读全文

posted @ 2012-08-26 09:45 lxjsailor 阅读(15988) 评论(0) 推荐(2) 编辑

2012年7月29日

将浮点型数据转化成字符输出

摘要: 在调试中,常常需要把数据发送到PC端,而串口通常以字节为单位传送数据,这就需要将各种不同类型的数据转化成字符串的形式。我在调试485程序时,遇到几个问题。 我打算将一个浮点型数据传送到PC,用串口助手观察其数值,所以我定义了一个字符数组:长度为8(我的数据取值有限,精确度要求也不高);前4元素为整数部分(千位、百位、十位、个位);第五个元素为小数点;后三个元素是小数。这样,调用RS485_Write函数就可以将这个数组发送到485。这个函数定义如下:void RS485_Write(u8* data,u16 len) { u16 i; DIR485_H ; for (i=0; i<l.. 阅读全文

posted @ 2012-07-29 20:27 lxjsailor 阅读(768) 评论(1) 推荐(0) 编辑

导航