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