久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2080|回復: 1
打印 上一主題 下一主題
收起左側

關于基本數(shù)據(jù)類型的定義

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-24 17:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫這篇博文的目的就是為了清晰的縷一下自己的思路,把用到的記錄下來以便將來方便使用。
char:1個字節(jié)
short:2個字節(jié)
int:在51等8位單片機下為2字節(jié),32位RAM單片機下為4字節(jié)​(在考慮不同平臺移植時最好用short和long)
long:4個字節(jié)​
float:4個字節(jié)
double:8個字節(jié)
下面是stm32中常用到的類型:​
u8 是 unsigned char
u16 是 unsigned short
u32 是 unsigned int(32位下,下面省略)


關于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語言的關鍵字
,作用是為一種數(shù)據(jù)類型定義一個新名字。)使得在不同的平臺下更好的移植。


還有三種遇到的類型​
typedef __IO int32_t  vs32;
typedef __IO int16_t  vs16;
typedef __IO int8_t   vs8;
#define __IO volatile ​
volatile 影響編譯器編譯的結果,指出,volatile變量是隨時可能發(fā)生變化的,與volatile變量有關的運算,不要進行編譯優(yōu)化,以免出錯。
它的作用使得編譯器​每次都會調(diào)用它本身,不會因為變量因為寄存器等變化出現(xiàn)錯誤,volatile可以保證對特殊地址的穩(wěn)定訪問,不會出錯。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:105323 發(fā)表于 2016-2-24 17:12 | 只看該作者
基本指針,數(shù)組,結構體
記錄下自己比較靈活比較實用的用法。
1.指針在函數(shù)中的數(shù)值傳遞。
首先舉一個例子:
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)勢在于可以減少變量的定義,把自己需要用到的變量在調(diào)用函數(shù)的同時講變量進行不同函數(shù)之間的傳遞,減少中間變量的定義,使得思路清晰,方便。

​2.指針與數(shù)組的關系
舉個例子:​
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ù)組名相當于一個指針,同時數(shù)組名所在的地址就是指向指針的首個地址。

3.結構體的定義​
typedef struct  int16_xyz{
                    int16_tX;
                    int16_tY;
                    int16_tZ;}T_int16_xyz;
一個典型的例子,通過struct定義了結構體​名為int16_xyz,里面包含了int16_tX,Y,Z三個變量,為了方便定義用了typedef方便這個結構體聲明類型T_int16_xyz。
​只需調(diào)用T_int16_xyz GYRO;​
這時GYRO中包含了X,Y,Z三個整型變量。​
使用結構體會使得結構清晰,提高代碼的可讀性。


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠色香婷婷久久亚洲精品 | 91久操视频 | 成人网av| 国产一二区视频 | 不卡一区二区三区四区 | 1级黄色大片 | 国产色| 盗摄精品av一区二区三区 | 中文一区 | 亚洲精品视频免费看 | 91精品久久久久久久久中文字幕 | 国产精品一区二区三区四区五区 | 亚洲国产成人精品在线 | 欧美综合久久 | 国产精品久久久久久久毛片 | 国产色播av在线 | 午夜爽爽男女免费观看hd | 日本精品一区二区三区在线观看视频 | 97精品国产97久久久久久免费 | 中文字幕日韩欧美一区二区三区 | 日韩免费成人av | 中文字幕av在线播放 | 日韩精品一区二区三区免费视频 | 亚洲成人精品 | 欧美福利影院 | 亚洲第一成人av | 国产精品久久久久久久 | 欧美日本一区二区 | 国产福利视频导航 | 一级黄色播放 | 成人高清视频在线观看 | 国产在线中文字幕 | 久久亚洲国产精品 | 黄色免费看 | 日韩欧美一级 | av色站 | 国产伦精品一区二区三区四区视频 | 91精品国产综合久久婷婷香蕉 | 91av视频在线 | 国产视频精品区 | 中文字幕av亚洲精品一部二部 |