關(guān)于嵌入式IO的基礎(chǔ)知識(shí)
1.IO口是芯片內(nèi)部CPU和外設(shè)之間溝通的橋梁,也是其他模塊(如I2C通訊、SPI通訊)的基礎(chǔ)。不同的芯片對(duì)IO的操作不太相同,但很類似。高級(jí)一點(diǎn)的芯片(如STM32,S3C2440)用寄存器控制IO口,輸出相應(yīng)電平;低級(jí)一點(diǎn)的芯片(如51),直接控制IO。
2.對(duì)于51這樣的單片機(jī)來說,其IO口的控制使用很簡(jiǎn)單,就是直接往相應(yīng)的IO口寫入或讀出。51單片機(jī)的IO口一般比較少,其可以直接控制到位操作。對(duì)于STM32和2440來說,對(duì)其IO口的控制則必須通過對(duì)應(yīng)的寄存器進(jìn)行控制。而且一般高級(jí)一點(diǎn)的芯片,其會(huì)提供更多的IO口,有的IO口還可以進(jìn)行功能復(fù)用,所以在使用時(shí)也需要通過配置相應(yīng)的控制寄存器選擇相應(yīng)的功能。
3.再說一點(diǎn)關(guān)于對(duì)于STM32和2440開發(fā)過程中遇到的一些想法:對(duì)于STM32來說,其在開發(fā)過程中可以使用提供的固件庫(當(dāng)然也可以直接操縱寄存器),而對(duì)于2440來說,一般還是直接操縱其寄存器。大概是因?yàn)镾TM32的寄存器的操縱比較復(fù)雜,2440的寄存器操作要相對(duì)簡(jiǎn)單些吧。
具體來說,對(duì)于STM32,一般其每個(gè)GPIO口會(huì)有8種輸入輸出模式可供選擇,所以對(duì)其配置也要復(fù)雜的多(不僅要配置功能模式,還要配置端口引腳的最大速度,還要開啟相應(yīng)的時(shí)鐘模塊)。而對(duì)于2440來說,對(duì)其GPIO的操作要稍微簡(jiǎn)單些,只需控制三個(gè)寄存器即可(分別是控制寄存器、數(shù)據(jù)寄存器、還有控制上拉寄存器)。其次,控制2440也不需要像STM2那樣配置相應(yīng)的時(shí)鐘樹,只需要對(duì)相應(yīng)的IO口配置相應(yīng)的功能,然后從數(shù)據(jù)寄存器中寫入或讀出數(shù)據(jù)即可。