前言
近期使用联合体发现在不同芯片上,存在数据不一致的问题,查阅相关资料发现不同架构的芯片存在大端序小端序的问题,下面这篇博客将对这个问题做一个记录,
前一段时间调试一个传感器,是232电平输出,当时不清楚TTL和232的区别直接找了个usb对串口的转接线连接到传感器上面,发现始终获取不到传感器的输出数据。现在记录一下232电平和TTL电平的区别。
TTL电平是晶体管-晶体管逻辑电平的简称。规定输出高电平>=2.4v,输出低电平低于0.4v;输入高电平大于2.0v,输入低电平低于0.8v。允许的噪声范围是0.4v
RS232电平是串口的一个标准,采用负逻辑控制,(-15v ~ -3v)表示1,(+15v ~ +3v)表示0.
C语言中有时会出现下面的描述printf("%3d",data)
这里的%3d
是什么意思了。
研究stm32的时候发现stm32的串口有uart和usart两种模式的库函数头文件,不太明白两者之间的区别,查阅资料通过这篇博客做个记录。
从名字上面看:
UART表示:universal asynchronous receiver and transmitter通用异步收/发器
USART表示:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器
这里可以看出usart在总线上面增加了同步功能,也就是usart增加了同步时钟输出的能力。
假设我们有两个分支master和dev,他们都有一个相同的提交,如下图所示:
阅读C代码的时候会发现在有些地方会使用#ifdef
有的地方会使用#ifndef
,如何区分这两个。
#ifdef
表示“if the following is defined”;#ifndef
表示“if the following is not defined”。
根据上面的描述可以推断下面代码会输出:”one is defined “
这里对前面学习SICP中使用的lisp的语法做一个总结。