原创 c語言深度剖析(27)—數組的本質分析

1.數組的基本概念  數組是相同類型的變量的有序集合  數組當中的元素沒有名字,我們只能通過數組名和下標來訪問數組中的元素。數組名a代表的是這5個存儲空間的集合。代表的是這一段內存。 數組在—片連續的內存空間中存儲元素,數組元素的個數可

原创 c語言深度剖析(31)—字符串典型問題分析

1.典型問題一 下面的程序輸出什麼?爲什麼? #include <stdio.h> int main() { char buf[10] = { 0 }; char src[] = "hello %s"; snprintf(bu

原创 c語言深度剖析(33)—main函數與命令行參數

1.main函數的概念 C語言中main函數稱之爲主函數,一個C語言程序是從main函數開始執行。  main函數定義的標準形式:  經實驗可知都正確  2. main函數的本質 main函數是操作系統調用的函數;  操作系統總是將ma

原创 SPI驅動程序設計(1)—SPI總線介紹

1.SPI總線結構 SPI(Serial Peripheral Interface)串行外設接口,是一種高速的,全雙工,同步的通信總線。採用主從模式 (Master Slave)架構,支持多個slave,一般僅支持單Master。 SP

原创 c語言深度剖析(35)—數組參數和指針參數分析

1.思考 爲什麼C語言中的數組參數會退化爲指針?  2.退化的意義  C語言中只會以值拷貝的方式傳遞參數  當向函數傳遞數組時:  將整個數組拷貝—份傳入函數(  X   ) 將數組名看做指針常量傳數組首元素地址 ( ✔ ) C語言以

原创 I2C驅動程序設計(1)—I2C總線介紹

1.I2C電氣特性 I2C(Inter-Integrated Circuit)總線是由PHILIPS公司開發的兩線式串行總線,用於連接微控制器及其外圍設備。硬件結構如下: I2C總線只有兩根雙向信號線: SDA:Serial Data

原创 c語言深度剖析(37)—指針閱讀技巧分析

1.指針閱讀技巧解析 右左法則 (實在看不懂看這個) 從最裏層的圓括號中未定義的標示符看起  首先往右看,再往左看  遇到圓括號或方括號時可以確定部分類型,並調轉方向  重複2, 3步驟,直到閱讀結束 示例: #include <

原创 c語言深度剖析(34)—多維數組和多級指針

1.指向指針的指針 指針的本質是變量  指針會佔用—定的內存空間  可以定義指向指針的指針來保存指針變量的地址值 int main() { int i = 0; int *p = NULL; // 定義指針變量p int *

原创 c語言深度剖析(36)—函數與指針分析

1.函數類型  C語言中的函數有自己特定的類型  函數的類型由返回值,參數類型和參數個數共同決定  int add(int i, int j) 的類型爲 int (int, int)  C語言中通過typedef爲函數類型重命名 

原创 SPI驅動程序設計(2)—Linux SPI子系統

1.SPI子系統架構 SPI 子系統架構主要有三部分組成 SPI core核心:用於連接SPI客戶驅動和SPI主控制器驅動,並且提供了對應的註冊和註銷的接口。 SPI controller driver主控制器驅動:用來驅動SPI控制

原创 I2C驅動程序設計(3)—I2C用戶態驅動程序設計

之前已經說過,有2種i2c驅動程序的設計,比如說針對EEPROM的驅動程序。我們可以專門編寫一個針對EEPROM的驅動程序。另一種方式就是通過i2c-dev,即通過i2c通用通用驅動,來編寫一個應用程序,來完成對設備的控制。我們現在就來實

原创 USB驅動程序設計(2)—USB協議分析

1.USB設備邏輯結構 在USB設備的邏輯組織中,包含設備、配置、接口和端點4個層次。設備通常有一個或多個配置,配置通常有一個或多個接口,接口有零或多個 端點。 每個USB設備都可以包含一個或多個配置,不同的配置使設備表現出不同的功能組

原创 c語言深度剖析(38)—C語言中的動態內存分配

1.動態內存分配的意義  C語言中的—切操作都是基於內存的  變量和數組都是內存的別名  內存分配由編譯器在編譯期間決定  定義數組的時候必須指定數組長度  數組長度是在編譯期就必須確定的  需求:程序運行的過程中,可能需要使用—些額外

原创 I2C驅動程序設計(2)—Linux下I2C子系統的介紹

1.I2C子系統架構   Linux下IIC的架構模型大概可以分爲3層: 第一層是I2C的從設備驅動,它包含圖中的device driver和i2c-dev。device driver需要用戶編寫,i2c-dev由內核實現,包含了I2

原创 USB驅動程序設計(3)—Linux USB系統架構

1.軟件系統架構 軟件的系統架構分爲2中,一種是主機架構,就是說運行Linux的設備是一個主機,可以插入U盤等設備。 最底部是一個USB主控制器,這是一個硬件,在芯片裏面都會帶有的。爲了讓這個主控制器工作起來,Linux需要有一個USB