天天看點

STM32CubeMX之GPIO的使用

相信大多是硬體工程師的第一個程式都是使用IO口點燈,就像程式員的第一個程式都是Hello world一樣。本篇文章将詳細的介紹使用STM32CubeMx生成工程并使用GPIO,包括基本的輸入輸出、中斷等的使用。

前期準備:

  • STM32硬體電路闆及仿真器(本篇以STM32F072C8單片機為例)
  • Keil v5以上版本(MDK-ARM)

系統配置

然後配置調試接口為SWD模式,系統時基為Systick定時器,如下圖所示。Systick初始化時會自動打開中斷(最低優先級),定時周期為1ms。

STM32CubeMX之GPIO的使用

GPIO配置

配置GPIO時,直接點選右側相應的引腳,在彈出菜單中選擇相應的功能,輸入還是輸出等,本例中配置了PA0、PA1、PA2三個端口,分别配置為輸出模式、輸入模式和外部中斷模式。配置完成後可在中間區域對每個IO進行詳細配置,包括端口初始電平,輸出模式是推挽輸出還是開漏輸出,輸入上下拉選擇,端口速度以及端口标簽。如下圖所示。本例中PA0配置為推挽輸出模式,用于控制LED,PA1配置為上拉輸入模式,用于檢測按鍵KEY1,PA2配置為外部中斷模式,下降沿中斷,用于檢測按鍵KEY2。

STM32CubeMX之GPIO的使用

端口配置為外部中斷後,需要在NVIC配置中打開相應的中斷才能正常使用,如下圖所示。可以看到System tick中斷是預設打開的。

STM32CubeMX之GPIO的使用

時鐘配置

首先按照上篇文章的介紹建立工程,之後配置系統時鐘,本例中選擇外部高速時鐘HSE作為系統時鐘,需要配置RCC如下圖,配置後相應的引腳顯示為時鐘模式。

STM32CubeMX之GPIO的使用

配置完成後再Clock Configuration頁面進一步配置時鐘,首先輸入外部時鐘的頻率,然後依次選擇時鐘源以及分頻、倍頻系數。本例外部時鐘為8MHz,最終配置系統時鐘為48MHz。當配置出現問題時,軟體會标紅提示。

STM32CubeMX之GPIO的使用
STM32CubeMX之GPIO的使用

所有配置完成後即可生成工程,可以看到時鐘和GPIO初始化已經有軟體生成,使用者隻要編寫自己的程式就行。普通IO操作比較簡單,直接調用相關函數即可,如下圖。

STM32CubeMX之GPIO的使用

外部中斷的使用相對複雜一些,需要使用者自己編寫回調函數,在stm32f0xx_it.c檔案中,可以看到,中斷函數已經定義好。

STM32CubeMX之GPIO的使用
STM32CubeMX之GPIO的使用

繼續閱讀