iT邦幫忙

2021 iThome 鐵人賽

DAY 5
1
Arm Platforms

STM32 基礎入門教學系列 第 5

【Day5】:GPIO輸入輸出(上)

GPIO

GPIO全稱為General-purpose input/output,通用型之輸入輸出的簡稱,可以供使用者對腳位進行輸入輸出的操作。

腳位

單晶片不外乎就是對各個腳位做輸入輸出來控制馬達、接收訊號等,因此我們首先要來認識STM32的腳位。我把STM32F429ZI這塊開發版的腳位分成兩個部分,一個是黑色已經焊好母座的腳位(圖中黑色部分)
另一個是黑色腳位兩側的腳位,目前我的這塊開發版是沒有焊上針腳的,(但我也有看過已經焊上公頭的開發版啦),總之就是將針腳分成內側與外側兩個部分。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525JC0s0XWOdM.jpg
外側的腳位比較簡單,直接翻到板子的背面就可以看到每個腳位的編號了,而內側的腳位名稱需要查表,看的是紅色箭頭所標示的名稱,未標示的為Arduino的腳位,因為這塊開發版是一塊兼容Arduino的板子,因此他也寫上了對應到Arduino的腳位。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525JQb6GCx38s.jpg
例如CN9的1號腳位名稱為PA3

ioc檔

這個檔案就是設定腳位配置的圖形化介面,在左側檔案管理的地方找到filename.ioc(filename為專案名稱),點擊兩下就會打開,過程有可能要一點時間
打開後一出現的就是STM32F429ZI單晶片的樣子啦,我們可以看到他總共有144個腳位(你可以數數看,不過我已經幫你數玩了啦~)在這裡我們就可以針對這144個腳位設定他的功能。
右下角的放大鏡可以輸入腳位名稱搜尋,例如輸入PB8對應到的腳位就會閃黑色,不要懷疑就是這個腳位了!
https://ithelp.ithome.com.tw/upload/images/20210905/20141525jKBTmyM83e.jpg
點擊選擇GPIO_Output這個模式,就順利的將這個腳位設為輸出模式了。如果想要復原,則可以選擇Reset_State這個模式,這也有可能需要一點時間,看到腳位就會變綠色就代表成功設定完啦~
https://ithelp.ithome.com.tw/upload/images/20210905/20141525N23dpjMLJL.jpg
只要有更動,且還沒有儲存,上面檔案這邊就會顯示" * ",這個時候按ctrl+s就可以順利儲存啦
https://ithelp.ithome.com.tw/upload/images/20210905/201415251Y90EOuKLJ.jpg
如果有遇到詢問的視窗都一律按Yes,可以打勾,下次就不會再出現提醒了。
https://ithelp.ithome.com.tw/upload/images/20210905/20141525GaDyqnNfK9.jpg
https://ithelp.ithome.com.tw/upload/images/20210905/20141525YXmaRhbSJB.jpg
最後回到main.c檔案,往下滑我們可以發現自動新增一些程式碼,這段程式碼的功能是將GPIO初始化,這也就是STMCubeIDE這個IDE好用的地方,可以自動產生代碼,不然這些東西自己打初學者應該會瘋掉吧...

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);

  /*Configure GPIO pin : PB8 */
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

小結

今天簡單的介紹了GPIO以及STM32的腳位要如何查詢,並且將腳位設定成輸出模式。明天我們就來實際的輸出看看吧!


上一篇
【Day4】:來使用STM32CubeIDE吧!
下一篇
【Day6】:GPIO輸入輸出(中)
系列文
STM32 基礎入門教學15

尚未有邦友留言

立即登入留言