亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
關(guān)于基本數(shù)據(jù)類型的定義
[打印本頁(yè)]
作者:
51黑黑黑
時(shí)間:
2016-2-24 17:11
標(biāo)題:
關(guān)于基本數(shù)據(jù)類型的定義
寫這篇博文的目的就是為了清晰的縷一下自己的思路,把用到的記錄下來以便將來方便使用。
char:1個(gè)字節(jié)
short:2個(gè)字節(jié)
int:在51等8位單片機(jī)下為2字節(jié),32位RAM單片機(jī)下為4字節(jié)(在考慮不同平臺(tái)移植時(shí)最好用short和long)
long:4個(gè)字節(jié)
float:4個(gè)字節(jié)
double:8個(gè)字節(jié)
下面是stm32中常用到的類型:
u8 是 unsigned char
u16 是 unsigned short
u32 是 unsigned int(32位下,下面省略)
關(guān)于uint8_t/uint16_t/uint32_t/uint64_t等數(shù)據(jù)類型
在inttypes.h下可以看到
00001
00017
00018 #ifndef __INTTYPES_H_
00019 #define __INTTYPES_H_
00020
00021
00023
00024 typedef signed char int8_t;
00025 typedef unsigned char uint8_t;
00026
00027 typedef int int16_t;
00028 typedef unsigned int uint16_t;
00029
00030 typedef long int32_t;
00031 typedef unsigned long uint32_t;
00032
00033 typedef long long int64_t;
00034 typedef unsigned long long uint64_t;
00035
00036 typedef int16_t intptr_t;
00037 typedef uint16_t uintptr_t;
00038
00039 #endif
使用uint_t定義更加方便,由于使用了typedef(為C語言的關(guān)鍵字
,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字。)使得在不同的平臺(tái)下更好的移植。
還有三種遇到的類型
typedef __IO int32_t vs32;
typedef __IO int16_t vs16;
typedef __IO int8_t vs8;
#define __IO volatile
volatile 影響編譯器編譯的結(jié)果,指出,volatile變量是隨時(shí)可能發(fā)生變化的,與volatile變量有關(guān)的運(yùn)算,不要進(jìn)行編譯優(yōu)化,以免出錯(cuò)。
它的作用使得編譯器每次都會(huì)調(diào)用它本身,不會(huì)因?yàn)樽兞恳驗(yàn)榧拇嫫鞯茸兓霈F(xiàn)錯(cuò)誤,volatile可以保證對(duì)特殊地址的穩(wěn)定訪問,不會(huì)出錯(cuò)。
作者:
51黑黑黑
時(shí)間:
2016-2-24 17:12
基本指針,數(shù)組,結(jié)構(gòu)體
記錄下自己比較靈活比較實(shí)用的用法。
1.指針在函數(shù)中的數(shù)值傳遞。
首先舉一個(gè)例子:
void GetData(T_float_angle *dmp_angle,T_short_xyz*gyr,T_short_xyz *acc)
{
if(mpu_dmp_get_data(&dmp_angle->pit,&dmp_angle->rol,&dmp_angle->yaw)==0)
{
mpu6050_GetGyroData(&gyr->x,&gyr->y,&gyr->z);
mpu6050_GetAccData(&acc->x,&acc->y,&acc->z);
}}
下面這樣調(diào)用它:(變量已在前面定義)
void DataRefresh(void)
{
static u8 rc_cnt=0;
GetData(&MPU_Angle,&MPU_Gyr,&MPU_Acc);
while(ERROR!=NRF_Rx_Dat(RX_BUF));
DataReceiveTransfer(RX_BUF,32,&Rc_in);
Rc_Fun(&Rc_in,FLY_Lock);
}
這樣使用的優(yōu)勢(shì)在于可以減少變量的定義,把自己需要用到的變量在調(diào)用函數(shù)的同時(shí)講變量進(jìn)行不同函數(shù)之間的傳遞,減少中間變量的定義,使得思路清晰,方便。
2.指針與數(shù)組的關(guān)系
舉個(gè)例子:
void usart1_SendBuf(u8 *buf,u8 len)
{
int i;
for(i=0;i
usart1_SendChar(*(buf+i)); //
可以換成usart1_SendChar(*buf); buf++;
}
調(diào)用:
u8 code[5]={1,2,3,4,5};
usart1_SendBuf(code,5);
這說明數(shù)組名相當(dāng)于一個(gè)指針,同時(shí)數(shù)組名所在的地址就是指向指針的首個(gè)地址。
3.結(jié)構(gòu)體的定義
typedef struct int16_xyz{
int16_tX;
int16_tY;
int16_tZ;}T_int16_xyz;
一個(gè)典型的例子,通過struct定義了結(jié)構(gòu)體名為int16_xyz,里面包含了int16_tX,Y,Z三個(gè)變量,為了方便定義用了typedef方便這個(gè)結(jié)構(gòu)體聲明類型T_int16_xyz。
只需調(diào)用T_int16_xyz GYRO;
這時(shí)GYRO中包含了X,Y,Z三個(gè)整型變量。
使用結(jié)構(gòu)體會(huì)使得結(jié)構(gòu)清晰,提高代碼的可讀性。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1