STM32 PA6引腳輸出低電平不正常的問題

2021-09-06 00:25:40 字數 1259 閱讀 7556

使用環境(藍色粗體字為特別注意內容)

1、軟體環境:keil uv5.15

2、硬體環境:stm32f103c8t6 最小系統

在乙個專案中需要用到stm32 的pa6引腳,發現工作異常。由於是自己做的最小系統,所以檢查了晶元引腳,並沒有發現虛焊、或者跟其他引腳連在一起的情況,初步判斷是微控制器或者程式的問題,硬體電路應該沒有問題,硬體電路如下所示。

手工做的板子,電路還在除錯,還沒來得及清潔,所以有點髒。拿出示波器觀察波形輸出

從示波器可以看出,pa6引腳輸出低電平無法到0v,而是2.1v左右。檢視引腳初始化**如下

void gpioinit()

main函式如下

void main()

}

整個過程沒有發現什麼異常的地方,突然想到之前有個demo是正常的,經排查,發現初始化**寫成如下的形式(即將gpio_pin_6改為gpio_pin_all)就能夠正常輸出

void gpioinit()

輸出波形如下:

很納悶,為什麼將gpioa引腳初始化為gpio_pin_6工作異常,而初始化為gpio_pin_all就正常呢?繼續排查,發現問題竟然是出現在spi初始化函式中!將標紅的語句注釋掉即可

spi_initstructure.spi_cpol =spi_cpol_high ; //始終懸空高  // spi_cpol_low//始終懸空低 

spi_initstructure.spi_cpha = spi_cpha_2edge;//第2個時鐘沿捕獲 //spi_cpha_1edge第1個時鐘沿捕獲 

// spi_initstructure.spi_nss = spi_nss_soft;     //硬體控制nss訊號(ss) 置成軟體時,nss腳可以他用 

檢視資料手冊可以發現pa6引腳跟spi通訊相關,可能是操作pa6引腳的時候跟spi衝突所致,正好專案中沒有用到spi通訊,所以將spi初始化遮蔽掉即可,具體原因有空再去了解吧~~~~。

STM32引腳模式說明

1 浮空輸入 預設狀態 gpio mode in floating 引腳自身視為開路,電平由外部電路決定,不能輸出 2 上拉輸入 gpio mode ipu與浮空輸入類似,但當外部電平不確定時,會被拉至高電平 3 下拉輸入 gpio mode ipd與浮空輸入類似,但當外部電平不確定時,會被拉至低電...

stm32引腳預設狀態

stm32中空的i o管腳是高電平還是低電平取決於具體情況。1 io埠復位後處於浮空狀態,也就是其電平狀態由外圍電路決定。2 stm32上電復位瞬間i o口的電平狀態預設是浮空輸入,因此是高阻。做到低功耗。3 stm32的io管腳配置口預設為浮空輸入,把選擇權留給使用者,這是乙個很大的優勢 一方面浮...

關於STM32中PA15引腳作為普通io的使用

最近做乙個專案,除錯的時候,發現pa15引腳無論配置輸出高還是低或者輸入,均只能輸出3.3v的高電平。前提說明,目前stm的硬體除錯有兩種方法,jtag和sw的方式,目前個人認為最好的方式就是sw,因為它只占用pa13和pa14兩個io。而jtag還要多占用pb3,pb4,pa15三個io口。很浪費...