使用環境(藍色粗體字為特別注意內容)
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口。很浪費...