2017年7月31日 星期一

STM32F469I GPIO 基本的閃爍控制

STM32F469I GPIO 基本的閃爍控制

板子上現成的 LED 與按鈕對應的 GPIO 腳位

LED1 G6
LED2 D4
LED3 D5
LED4 K3
按键 A0

函式解說

延遲函式,這個內建沒有我們自己弄一個
void delay(){
  int i;
  for(i=0; i<0xffffff; ++i);
}
如果需要精準的時間延遲可以參考這一篇站內連結
STM32 (F469I) 延遲時間 如何精準的計算

初始化

HAL_Init();
BSP_LED_Init(LED1);
這裡的LED1是對應到這張板子的正面的LED1

使用函式

關燈
HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN , GPIO_PIN_RESET);
開燈
HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN , GPIO_PIN_SET);

範例代碼

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  BSP_LED_Init(LED1);

  while(1)
  {
    delay();
    HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN , GPIO_PIN_RESET);
    delay();
    HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN , GPIO_PIN_SET);
  }
}

詳細代碼

如果不用內建函式LED1的字樣的話完整的打法是這樣
下面的範例是 B4 ,第一行就是改成4,第二行與第三行的 GPIO 後面改為B
  uint16_t pin = GPIO_PIN_4;
  GPIO_TypeDef* port = GPIOB;
  __HAL_RCC_GPIOB_CLK_ENABLE();

  GPIO_InitTypeDef  GPIO_InitStruct;
  GPIO_InitStruct.Pin = pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
  HAL_GPIO_Init(port, &GPIO_InitStruct);
  HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET);

GPIO所有腳位的位置

查看手冊 STM32F469 Discovery user manual.pdf 這一份文件內的資料
第17頁與18頁有提到對應MCU那些腳位
背板腳位 實際腳位
D15 PB8
D14 PB9
D13 PD3
D12 PB14
D11 PB15
D10 PH6
D9 PA7
D8 PG10
D7 PG11
D6 PA6
D5 PA2
D4 PG12
D3 PA1
D2 PG13
D1 PG14
D0 PG9

參考

按鈕控制

參考

沒有留言:

張貼留言