嵌入式系統/輸入與輸出(I/O)

在嵌入式系統中,大部分輸入端與輸出端都是邏輯電平管腳(端口),而輸入操作是讀取某個管腳的邏輯值,輸出操作是向這個管腳寫入邏輯值。此外,單片機也會將某個管腳上的電平變化作為輸入,而這類輸入會被作為中斷處理。I/O管腳會被打包成為管腳埠,統一管理。

部分單片機提供了內嵌A/D轉換器,可以接收外部的模擬信號。

單片機讀取到數據後,會利用嵌入的解碼器來解碼UART、IIC、SPI、CAN等現場總線的內容。

定位管腳

編輯

就像寄存器一樣,管腳也被映射到了某一個地址上,在C語言裏讀寫管腳就是向相應的內存地址賦值。

sfr  P1  =  0x90;  //P1接口埠的地址
sbit  P1_3  =  P13;    //因 P1 端口的寄存器是可位寻址的,所以能定义P1_1 为 P1接口埠中的3引脚
P1 = 0x8; //将P1的4管脚设为1,其他管脚设为0
P1_3 = 1

初始化管腳

編輯

在STM單片機中,如果使用某個管腳作為I/O管腳,就需要在使用管腳之前,指定這一管腳的用法:

  • 用作輸入還是輸出(INPUT OUTPUT)
  • 有無上拉電阻或下拉電阻(PULLUP PULLDOWN)
  • 速度為多少
  • 如果這一管腳是輸入管腳,應該啟用對應管腳埠的時鐘。

讀寫管腳

編輯

操縱某幾個比特位

編輯

STM的庫函數

編輯

中斷

編輯

處理原始數據與通訊協議

編輯