一、C语言基础
1、8位数据转换成16位数据的方法
举例说明:
unsigned char a = 0x12; unsigned char b = 0x34; unsigned int c = 0;如何把两个8位数据和在一起变成16位数据呢?
方法1:使用移位指令
int c = (a<<8)|b;2、USART发送一个16位数据时是低8位先发还是高八位先发
不能一次发16位数据,要把16位数据分成两个字节,即高8位和低8位。发送时,可先发低8位,后发高8位。接收时,也按这个顺序接收,再组合恢复成16位数就行了。如果先发高8位,后发低8位也行,只要发送/接收要统一先后顺序就可以,就能接收到正确的16位数据了。
3、按位异或
当前位的两个二进制表示不同则为1 ,相同则为0
延伸下:
与(&) 0 & 0 = 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1任何数与0得0,1与1得1
或(|) 0 | 0 = 0 1 | 0 = 1 0 | 1 = 1 1 | 1 = 1任何数或1得1,0或0得0
或(^) 0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 1 ^ 1 = 0 即相同为0,相异为1
4、在KEIL中如何实现在switch下定义一个uint16_t的变量而不会警告
在case标签后立即用花括号{}包裹变量定义,创建独立块作用域。
2、指针
3、结构体
4、位操作