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