
c
文章平均质量分 62
Acrash
这个作者很懒,什么都没留下…
展开
-
关于printf重定向到串口
我在某个CortextM3的源码里的debug.c找到了fputc。应该说,某些系统是通过fputc建立联系,而不是putchar的。如下:void fputc_hook(char ch){ if (DebugType == 0) { UARTWriteByte(ch, 1000); } else { VirtualUart转载 2016-03-19 18:31:57 · 3654 阅读 · 0 评论 -
回车 & 换行
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告转载 2016-04-12 13:36:00 · 861 阅读 · 0 评论 -
关于__attribute__((packed))
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof(int)转载 2016-03-25 21:50:45 · 263 阅读 · 0 评论 -
c 语言中结构体
结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结转载 2016-04-02 22:31:01 · 268 阅读 · 0 评论 -
关于字符串数组的问题
#include int main() { char *p="abcdef"; //很多书上说:p在栈,“abcdef”在数据区 :没错!!!!p[2]='W'; printf(p); getchar(); return 0; } 这个程序编译通过,但是问什么程序运行会出错? //p指向的是一块常量数据区,不能修改其值!!!! 另一个: #inc转载 2016-04-03 10:39:10 · 311 阅读 · 0 评论 -
Define,const,static用法总结
1、Define用法:define主要是用于宏常量定义的,使程序看起来更简洁明了,方便代码维护,#define定义的实质只是一个常数的名字,没有具体数据类型的,没有分配内存空间。在编译是会被编译器替换为该常数。每次使用该宏定义,就要进行编译并分配空间,若一个程序中多次使用define定义的数据,则就会有多份拷贝。这么做是为了提高程序的可读性,但安全性相对差点。2、const用法:con转载 2016-04-01 15:16:47 · 451 阅读 · 0 评论 -
vsprintf函数和va_list用法详解
今天写AVR单片机程序,看串口通讯函数:void UART1_Printf(char *fmt,...){ va_list ap; char string[128]; va_start(ap, fmt); vsprintf(string, fmt, ap); UART1_SendString(string); va_end(ap);}不解。查找了一下用法,记转载 2016-04-02 22:32:27 · 664 阅读 · 1 评论 -
about u2_printf
void u2_printf(char* fmt,...) { va_list ap; va_start(ap,fmt); vsprintf((char*)USART2_TX_BUF,fmt,ap); va_end(ap); while(DMA1_Channel7->CNDTR!=0); UART_DMA_Enabl原创 2016-04-02 21:45:58 · 1863 阅读 · 0 评论 -
c语言中static 函数和普通函数的区别?
C程序一直由下列部分组成:1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信转载 2016-04-02 19:46:43 · 378 阅读 · 0 评论 -
嵌入式C语言之---模块化编程
当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干。你需要和你的小组成员分工合作,一起完成项目,这就要求小组成员各自负责一部分工程。比如你可能只是负责通讯或者显示这一块。这个时候,你就应该将自己的这一块程序写成一个模块,单独调试,留出接口供其它模块调用。最后,小组成员都将自己负责的模块写完并调试无误后,由项目组长进行组合调试。像这些场合就要求程序必须模块化。模块化的好处是很多的,不仅转载 2016-04-02 17:05:41 · 686 阅读 · 0 评论 -
c中字符数组的问题
通常字符数组中的所存储的内容也可以称为字符串, 但我想你想表达的意思可能是对于:char *p1 = "A String.";和char p2[] = "Another String.";这两种写法的不同吧.p1指向的这个字符串是个常量, 不可改变, 程序在编译期间就为"A String."这个字符串分配了固定的空间, 它被存储在全局静态转载 2016-03-21 14:14:37 · 278 阅读 · 0 评论 -
sim900a call
SIM900A手机模块的3大功能:接拨电话,收发短信和TCP/UDP通信。现在的手机基本上可以不叫手机了,真正的手机功能(前面所说的3大功能)占用不到1/5的主机资源。其实手机的工作原理非常简单,就是一个主机与从机(sim900a之类的DSP或MCU)之间的串口通信,主机向从机发送指令,从机响应指令发回响应值,然后在LCD上显示相应的界面。 原子的例程仅仅是最简单的芯片测试程序,转载 2016-03-20 16:35:40 · 3003 阅读 · 0 评论 -
32位和64位及其内存长度
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(C转载 2016-10-17 15:25:22 · 19220 阅读 · 3 评论