資料介紹
// 開關
#define ?SW_ON ? ? ? ? ? ? ??1
#define ?SW_OFF ? ? ? ? ? ? ?2
#define ?SW_INVERT ? ? ? ? ??3
?
// 右移位替代除法
#define ?SHIFT_DIVISOR_2 ? ??1 ? ? // 右移1位 (除以2)
#define ?SHIFT_DIVISOR_4 ? ??2 ? ? // 右移2位 (除以4)
#define ?SHIFT_DIVISOR_8 ? ??3 ? ? // 右移3位 (除以8)
#define ?SHIFT_DIVISOR_16 ? ?4 ? ? // 右移4位 (除以16)
#define ?SHIFT_DIVISOR_32 ? ?5 ? ? // 右移5位 (除以32)
#define ?SHIFT_DIVISOR_64 ? ?6 ? ? // 右移6位 (除以64)
#define ?SHIFT_DIVISOR_128 ??7 ? ? // 右移7位 (除以128)
#define ?SHIFT_DIVISOR_256 ??8 ? ? // 右移8位 (除以256)
?
// ------------------------------------------------------
#ifndef ?__I
#ifdef ? __cplusplus
#define ?__I ? ? ? ? ? ? ? ?volatile ? ? ? ? ? ? // 只讀
#else
// 程序空間在數據空間中可見(可使用const變量)
#define ?__I ? ? ? ? ? ? ? ?volatile const ? ? ? // 只讀
#endif
#endif
#ifndef ?__O
#define ?__O ? ? ? ? ? ? ? ?volatile ? ? ? ? ? ? // 只寫
#endif
#ifndef ?__IO
#define ?__IO ? ? ? ? ? ? ? volatile ? ? ? ? ? ? // 讀寫
#endif
?
typedef unsigned char ? ? ? ? ??uint8_t, ?INT8U, ?BYTE;
typedef ??signed char ? ? ? ? ??int8_t, ??INT8S;
typedef unsigned int ? ? ? ? ? ?uint16_t, INT16U, HWORD;
typedef ??signed int ? ? ? ? ? ?int16_t, ?INT16S;
typedef unsigned long int ? ? ??uint32_t, INT32U, WORD;
typedef ??signed long int ? ? ??int32_t, ?INT32S;
typedef unsigned long long int ?uint64_t, INT64U, DWORD;
typedef ??signed long long int ?int64_t, ?INT64S;
?
#define ? UINT8_MAX ? ? ?(uint8_t)( 255)
#define ? ?INT8_MIN ? ? ?(int8_t)( -128)
#define ? ?INT8_MAX ? ? ?(int8_t)( ?127)
#define ?UINT14_MAX ? ? ?(uint16_t)(16383)
#define ? INT14_MAX ? ? ?(int16_t)( 16383)
#define ?UINT16_MAX ? ? ?(uint16_t)(65535)
#define ? INT16_MIN ? ? ?(int16_t)(-32768)
#define ? INT16_MAX ? ? ?(int16_t)( 32767)
#define ?UINT32_MAX ? ? ?(uint32_t)(4294967295)
#define ? INT32_MIN ? ? ?(int32_t)(-2147483648)
#define ? INT32_MAX ? ? ?(int32_t)( 2147483647)
#define ?UINT64_MAX ? ? ?(uint64_t)(18446744073709551615)
#define ? INT64_MIN ? ? ?(int64_t)(-9223372036854775808)
#define ? INT64_MAX ? ? ?(int64_t)( 9223372036854775807)
?
// ------------------------------------------------
// 字節操作類型
typedef union
{
? ??__IO char ? ?ch; ? ? ? ? // 字符
? ??__IO int8_t ?iByte; ? ? ?// 有符號數
? ??__IO uint8_t byte; ? ? ? // 字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:4;
? ? ? ??__IO uint8_t d1:4;
? ? } hByte; ? ? ? ? ? ?// 半字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:1;
? ? ? ??__IO uint8_t d1:1;
? ? ? ??__IO uint8_t d2:1;
? ? ? ??__IO uint8_t d3:1;
? ? ? ??__IO uint8_t d4:1;
? ? ? ??__IO uint8_t d5:1;
? ? ? ??__IO uint8_t d6:1;
? ? ? ??__IO uint8_t d7:1;
? ? } bittel; ? ? ? ? ? // 二進制位
} Byte_t, *Byte_pt;
?
// 半字操作類型(存儲模式:小端模式,低字節在低地址)
typedef union
{
? ??__IO int16_t ?iHWord; ? ?// 有符號數
? ??__IO uint16_t hWord; ? ? // 半字
? ??struct
? ? {
? ? ? ??__IO uint8_t d0;
? ? ? ??__IO uint8_t d1;
? ? } byte; ? ? ? ? ? ? // 字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:4;
? ? ? ??__IO uint8_t d1:4;
? ? ? ??__IO uint8_t d2:4;
? ? ? ??__IO uint8_t d3:4;
? ? } hByte; ? ? ? ? ? ?// 半字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:1;
? ? ? ??__IO uint8_t d1:1;
? ? ? ??__IO uint8_t d2:1;
? ? ? ??__IO uint8_t d3:1;
? ? ? ??__IO uint8_t d4:1;
? ? ? ??__IO uint8_t d5:1;
? ? ? ??__IO uint8_t d6:1;
? ? ? ??__IO uint8_t d7:1;
? ? ? ??__IO uint8_t d8:1;
? ? ? ??__IO uint8_t d9:1;
? ? ? ??__IO uint8_t d10:1;
? ? ? ??__IO uint8_t d11:1;
? ? ? ??__IO uint8_t d12:1;
? ? ? ??__IO uint8_t d13:1;
? ? ? ??__IO uint8_t d14:1;
? ? ? ??__IO uint8_t d15:1;
? ? } bittel; ? ? ? ? ? // 二進制位
} HWord_t, *HWord_pt;
?
// 字操作類型(存儲模式:小端模式)
typedef union
{
? ??__IO float ? ?fVal; ? ? ?// 單精度浮點數
? ??__IO int32_t ?iWord; ? ? // 有符號數
? ??__IO uint32_t word; ? ? ?// 字
? ??struct
? ? {
? ? ? ??__IO uint16_t d0;
? ? ? ??__IO uint16_t d1;
? ? } hWord; ? ? ? ? ? ?// 半字
? ??struct
? ? {
? ? ? ??__IO uint8_t d0;
? ? ? ??__IO uint8_t d1;
? ? ? ??__IO uint8_t d2;
? ? ? ??__IO uint8_t d3;
? ? } byte; ? ? ? ? ? ? // 字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:4;
? ? ? ??__IO uint8_t d1:4;
? ? ? ??__IO uint8_t d2:4;
? ? ? ??__IO uint8_t d3:4;
? ? ? ??__IO uint8_t d4:4;
? ? ? ??__IO uint8_t d5:4;
? ? ? ??__IO uint8_t d6:4;
? ? ? ??__IO uint8_t d7:4;
? ? } hByte; ? ? ? ? ? ?// 半字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:1;
? ? ? ??__IO uint8_t d1:1;
? ? ? ??__IO uint8_t d2:1;
? ? ? ??__IO uint8_t d3:1;
? ? ? ??__IO uint8_t d4:1;
? ? ? ??__IO uint8_t d5:1;
? ? ? ??__IO uint8_t d6:1;
? ? ? ??__IO uint8_t d7:1;
? ? ? ??__IO uint8_t d8:1;
? ? ? ??__IO uint8_t d9:1;
? ? ? ??__IO uint8_t d10:1;
? ? ? ??__IO uint8_t d11:1;
? ? ? ??__IO uint8_t d12:1;
? ? ? ??__IO uint8_t d13:1;
? ? ? ??__IO uint8_t d14:1;
? ? ? ??__IO uint8_t d15:1;
? ? ? ??__IO uint8_t d16:1;
? ? ? ??__IO uint8_t d17:1;
? ? ? ??__IO uint8_t d18:1;
? ? ? ??__IO uint8_t d19:1;
? ? ? ??__IO uint8_t d20:1;
? ? ? ??__IO uint8_t d21:1;
? ? ? ??__IO uint8_t d22:1;
? ? ? ??__IO uint8_t d23:1;
? ? ? ??__IO uint8_t d24:1;
? ? ? ??__IO uint8_t d25:1;
? ? ? ??__IO uint8_t d26:1;
? ? ? ??__IO uint8_t d27:1;
? ? ? ??__IO uint8_t d28:1;
? ? ? ??__IO uint8_t d29:1;
? ? ? ??__IO uint8_t d30:1;
? ? ? ??__IO uint8_t d31:1;
? ? } bittel; ? ? ? ? ? // 二進制位
} Word_t, *Word_pt;
?
// 雙字操作類型(存儲模式:小端模式)
typedef union
{
? ??__IO double ??dFVal; ? ? // 雙精度浮點數
? ??__IO int64_t ?iDWord; ? ?// 有符號數
? ??__IO uint64_t dWord; ? ? // 雙字
? ??struct
? ? {
? ? ? ??__IO uint32_t d0;
? ? ? ??__IO uint32_t d1;
? ? } word; ? ? ? ? ? ? // 字
? ??struct
? ? {
? ? ? ??__IO uint16_t d0;
? ? ? ??__IO uint16_t d1;
? ? ? ??__IO uint16_t d2;
? ? ? ??__IO uint16_t d3;
? ? } hWord; ? ? ? ? ? ?// 半字
? ??struct
? ? {
? ? ? ??__IO uint8_t d0;
? ? ? ??__IO uint8_t d1;
? ? ? ??__IO uint8_t d2;
? ? ? ??__IO uint8_t d3;
? ? ? ??__IO uint8_t d4;
? ? ? ??__IO uint8_t d5;
? ? ? ??__IO uint8_t d6;
? ? ? ??__IO uint8_t d7;
? ? } byte; ? ? ? ? ? ? // 字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:4;
? ? ? ??__IO uint8_t d1:4;
? ? ? ??__IO uint8_t d2:4;
? ? ? ??__IO uint8_t d3:4;
? ? ? ??__IO uint8_t d4:4;
? ? ? ??__IO uint8_t d5:4;
? ? ? ??__IO uint8_t d6:4;
? ? ? ??__IO uint8_t d7:4;
? ? ? ??__IO uint8_t d8:4;
? ? ? ??__IO uint8_t d9:4;
? ? ? ??__IO uint8_t d10:4;
? ? ? ??__IO uint8_t d11:4;
? ? ? ??__IO uint8_t d12:4;
? ? ? ??__IO uint8_t d13:4;
? ? ? ??__IO uint8_t d14:4;
? ? ? ??__IO uint8_t d15:4;
? ? } hByte; ? ? ? ? ? ?// 半字節
? ??struct
? ? {
? ? ? ??__IO uint8_t d0:1;
? ? ? ??__IO uint8_t d1:1;
? ? ? ??__IO uint8_t d2:1;
? ? ? ??__IO uint8_t d3:1;
? ? ? ??__IO uint8_t d4:1;
? ? ? ??__IO uint8_t d5:1;
? ? ? ??__IO uint8_t d6:1;
? ? ? ??__IO uint8_t d7:1;
? ? ? ??__IO uint8_t d8:1;
? ? ? ??__IO uint8_t d9:1;
? ? ? ??__IO uint8_t d10:1;
? ? ? ??__IO uint8_t d11:1;
? ? ? ??__IO uint8_t d12:1;
? ? ? ??__IO uint8_t d13:1;
? ? ? ??__IO uint8_t d14:1;
? ? ? ??__IO uint8_t d15:1;
? ? ? ??__IO uint8_t d16:1;
? ? ? ??__IO uint8_t d17:1;
? ? ? ??__IO uint8_t d18:1;
? ? ? ??__IO uint8_t d19:1;
? ? ? ??__IO uint8_t d20:1;
? ? ? ??__IO uint8_t d21:1;
? ? ? ??__IO uint8_t d22:1;
? ? ? ??__IO uint8_t d23:1;
? ? ? ??__IO uint8_t d24:1;
? ? ? ??__IO uint8_t d25:1;
? ? ? ??__IO uint8_t d26:1;
? ? ? ??__IO uint8_t d27:1;
? ? ? ??__IO uint8_t d28:1;
? ? ? ??__IO uint8_t d29:1;
? ? ? ??__IO uint8_t d30:1;
? ? ? ??__IO uint8_t d31:1;
? ? ? ??__IO uint8_t d32:1;
? ? ? ??__IO uint8_t d33:1;
? ? ? ??__IO uint8_t d34:1;
? ? ? ??__IO uint8_t d35:1;
? ? ? ??__IO uint8_t d36:1;
? ? ? ??__IO uint8_t d37:1;
? ? ? ??__IO uint8_t d38:1;
? ? ? ??__IO uint8_t d39:1;
? ? ? ??__IO uint8_t d40:1;
? ? ? ??__IO uint8_t d41:1;
? ? ? ??__IO uint8_t d42:1;
? ? ? ??__IO uint8_t d43:1;
? ? ? ??__IO uint8_t d44:1;
? ? ? ??__IO uint8_t d45:1;
? ? ? ??__IO uint8_t d46:1;
? ? ? ??__IO uint8_t d47:1;
? ? ? ??__IO uint8_t d48:1;
? ? ? ??__IO uint8_t d49:1;
? ? ? ??__IO uint8_t d50:1;
? ? ? ??__IO uint8_t d51:1;
? ? ? ??__IO uint8_t d52:1;
? ? ? ??__IO uint8_t d53:1;
? ? ? ??__IO uint8_t d54:1;
? ? ? ??__IO uint8_t d55:1;
? ? ? ??__IO uint8_t d56:1;
? ? ? ??__IO uint8_t d57:1;
? ? ? ??__IO uint8_t d58:1;
? ? ? ??__IO uint8_t d59:1;
? ? ? ??__IO uint8_t d60:1;
? ? ? ??__IO uint8_t d61:1;
? ? ? ??__IO uint8_t d62:1;
? ? ? ??__IO uint8_t d63:1;
? ? } bittel; ? ? ? ? ? // 二進制位
} DWord_t, *DWord_pt;
?
// ------------------------------------------------------
// 時間計算
typedef struct CalTime
{
? ??__IO uint16_t bDelay:1; ?// 延時標識
? ??__IO uint16_t bExe:1; ? ?// 執行標識
? ??__IO uint16_t bCon:1; ? ?// 控制標識
? ??__IO uint16_t con:13; ? ?// 控制值 [0,8191]
? ??__IO uint16_t val; ? ? ? // 計數值
} CalTime_t, *CalTime_pt;
?
// ------------------------------------------------------
// ===單二進制位操作宏===
// 2字節長度
#define SetBit2B(Byte, Bit) ? ?( (Byte) |= ?(((uint16_t)1)<<(Bit)) )
#define ClrBit2B(Byte, Bit) ? ?( (Byte) &= ~(((uint16_t)1)<<(Bit)) )
#define ComBit2B(Byte, Bit) ? ?( (Byte) ^= ?(((uint16_t)1)<<(Bit)) )
#define GetBit2B(Byte, Bit) ? ?(((Byte) & ? (((uint16_t)1)<<(Bit))) ? 1 : 0)
// 4字節長度
#define SetBit4B(Byte, Bit) ? ?( (Byte) |= ?(((uint32_t)1)<<(Bit)) )
#define ClrBit4B(Byte, Bit) ? ?( (Byte) &= ~(((uint32_t)1)<<(Bit)) )
#define ComBit4B(Byte, Bit) ? ?( (Byte) ^= ?(((uint32_t)1)<<(Bit)) )
#define GetBit4B(Byte, Bit) ? ?(((Byte) & ? (((uint32_t)1)<<(Bit))) ? 1 : 0)
// 8字節長度
#define SetBit8B(Byte, Bit) ? ?( (Byte) |= ?(((uint64_t)1)<<(Bit)) )
#define ClrBit8B(Byte, Bit) ? ?( (Byte) &= ~(((uint64_t)1)<<(Bit)) )
#define ComBit8B(Byte, Bit) ? ?( (Byte) ^= ?(((uint64_t)1)<<(Bit)) )
#define GetBit8B(Byte, Bit) ? ?(((Byte) & ? (((uint64_t)1)<<(Bit))) ? 1 : 0)
?
// ===多二進制位操作宏===
#define SetBits(Byte, Bits) ? ?( (Byte) |= ?(Bits) )
#define ClrBits(Byte, Bits) ? ?( (Byte) &= ~(Bits) )
#define ComBits(Byte, Bits) ? ?( (Byte) ^= ?(Bits) )
#define GetBits(Byte, Bits) ? ?( (Byte) & ? (Bits) )
- MCU_頭文件編寫
- 單片機-頭文件
- 使用KEIL開發51單片機時出現頭文件報重復定義的錯誤應該如何解決
- 51單片機編程的頭文件reg51.h詳解
- 單片機C語言編程的頭文件reg51.h和reg52.h的詳細資料解析
- 51單片機的頭文件reg51h詳細資料講解
- 單片機的C51頭文件到底是什么意思
- Linux中有哪些常見的文件類型? 0次下載
- 教大家一個如何在頭文件中定義全局變量的方法 19次下載
- 如何在C++代碼中使用C頭文件 3次下載
- C#教程之獲取文件類型 4次下載
- DSP之標準頭文件 12次下載
- 硬件類型定義 7次下載
- 基于TMS320F28027的頭文件源文件 53次下載
- WIN7添加攝像頭文件 4次下載
- 可重復頭文件的固定結構 477次閱讀
- 請問頭文件能不能定義變量呢? 1377次閱讀
- C語言必備知識頭文件包含 2178次閱讀
- 淺談PLC定義數據類型的應用 1503次閱讀
- C 語言的頭文件路徑位置問題 6573次閱讀
- 定義數據類型 1096次閱讀
- 怎么批量移動特定文件到指定文件夾 3686次閱讀
- 模版定義一定要寫在頭文件中嗎? 1646次閱讀
- C語言頭文件路徑的剖析 2048次閱讀
- 用戶自定義類型 1188次閱讀
- Linux的文件類型介紹 1177次閱讀
- C語言的頭文件組織與包含原則 3635次閱讀
- C語言中程序員編寫的頭文件和編譯器自帶的頭文件 7960次閱讀
- 學習嵌入式linux系統開發,文件類型一定要分清 954次閱讀
- Allegro中的文件類型后綴匯總 7087次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論