1. 有关stm32的问题,程序里面的u8、u16这些是什么意思啊
u8是unsigned char,u16是unsigned short,u32是unsigned long。
u8,u16,u32都是c语言数据类型,分别代表8位,16位,32位长度的数据类型,一个字节是8位,所以u8是1个字节,u16是2个字节,u32是4个字节。
可以在stm32库头文件中找到数据类型的声明
在stdint.h中:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
在stm32f10x.h 中:
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
(1)c语言u8扩展阅读
CPU按照其处理信息的字长可以分为:8位微处理器、16位微处理器、32位微处理器以及64位微处理器等。字、半字是根据处理器的特性决定的,字节则都是8bit。
stm32是32bit处理器,所以它的字是32bit的(一次处理4字节长度的数据),半字自然就是16bit(2字节)。存储半字类型数据的寄存器由u16类型的变量访问,但是如果用u8类型变量只能访问该数据低8位,用u32类型变量读的时候没问题,写的时候会因编译器的不同而出现偏差。
stm32和传统的arm相比最大的好处就是不需要对齐,三种类型的数据可以在内存中无缝的存放。而传统的arm7或arm9等是照着地址对齐的,就是说不管8bit或者16bit的数据都要占用4个字节的空间,这样的结果就是造成内存的浪费。
2. 请问一下高手们,C语言宏定义这是个什么意思,*(u8*)(u32)
思路:抽丝剥茧
知识点:指针
------
//(u32)(x)得到内存地址(无符号32位)
//(u8*)(u32)(x)指向这个内存地址
//*(u8*)(u32)(x)从这个内存地址取值
这里的u8只是规定了从内存中取什么东西。
前提是你知道那个地址放的是什么类型的数据,也可以是u16、u32甚至是某种struct类型。
------
参考:http://ke..com/link?url=A__BKbYUE0TBlITsJY_gec80FhuB_ 2.3节
3. c语言中u8是什么意思
"u8*"一般代表unsigned char* ,是使用typedef或者define重新定义过的,指向无符号字符数据类型的指针。
另外:
u8 是unsigned char
u16 是unsigned short
u32 是unsigned int
(3)c语言u8扩展阅读:
unsigned char介绍
unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的)。
在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。
无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。
4. c语言中u8,u16,u32和int区别
这几种方式都是在表达同1个意思,没有区别。
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
代码示例:
voidTIM3_Int_Init(u16arr,u16psc)
{
//dosomething...
}
(4)c语言u8扩展阅读
u8,u16,u32的使用
示例:
#defineU32 unsignedint
#defineU16 unsignedshort
#defineS32 int
#defineS16 shortint
#defineU8 unsignedchar
#defineS8 char
unsignedchar=u8
unsignedshortint=u16
unsignedlongint=u32
5. C语言“u8 *“什么类型
u8 是 unsigned char
u16 是 unsigned short
u32 是 unsigned int
u8 * 就表示指向unsigned char(无符号字符类型)的指针,属于指针类型。
6. 单片机中u8类型u16类型是如何区别
u8是unsigned char,u16是unsigned short。
u8,u16是C语言数据类型,分别代表8位,16位一个字节是8位,所以u8是1个字节,u16是2个字节。
例如:
void TIM3_Int_Init(u16 arr,u16 psc)
{
//do something...
}
(6)c语言u8扩展阅读:
注意事项
stdint.h 这里放着C语言的标准表达方式//第36行开始
typedef signed char int8_t;//标准表达方式 signed char 被等同于 int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;//在32位环境里,int代表4个字节32位!
typedef signed __int64 int64_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
stm32f10x.h这个文件主要是为了兼容旧版本
typedef uint32_t u32;///32位
typedef uint16_t u16;///16位
typedef uint8_t u8;///8位
7. stm32,c语言中,u8类型的数据,要怎样才能截取部分字符使得表达式成立
res是 u8 ? 那是一个8位,怎么能和字符串比较,,,,,,可以和字符串中某个字符比较
~
~
~
8. C语言中void main(u8 a),这里的(u8 a)是什么意思,应该怎样理解
这里的 u8 a,就是一个参数定义,u8表示无符号8位整形的意思,在C语言里表示为unsigned char,比如你在c头文件中有如下定义:
typedef unsigned char u8;
你就可以在包含该头文件的原文件里使用u8来定义变量了,比如:
u8 a, b;
等同于:
unsigned char a, b;
谢谢
9. C语言,如果u8 buffer【】={“test”};那(u8*)buffer 是什么意思,表示怎么个逻辑运算关系,谢谢。
u8表示buffer中数据类型,(u8*)buffer表示将buffer强制转换成u8*,变量前面的()是强制类型转换