Google Code Prettify

2018年8月17日 星期五

[STM32]第一支程式GPIO

 在學習任何程式語言的第一個作業,通常都是Hello world,讓Hello world的文字顯示在畫面上,原因是因為這程式簡單好懂,作為第一個作業可以讓初學者體驗程式語言的樂趣及建立信心,增進學習動機,而利用GPIO來點亮開發版上的LED,也因為簡單好懂常被作為教材的第一個程式。

上一篇文章有提到STM32Cube的基本操作,這篇就直接從設定晶片開始。

選完晶片後的開始畫面
設定晶片的單步除錯腳位
除錯腳位設定為SW


我使用的開發版上LED為PC8、PC9,選擇這兩個腳位將他設定成GPIO_output

設定腳位功能
可以從左邊的project,切換到Function,找到GPIO的檔案,使用方式裡面有官方提供的註解,這邊簡要的介紹一下。
GPIO常用的函式如下:
HAL_GPIO_WritePin(); 寫入PIN的狀態
HAL_GPIO_ReadPin();讀取PIN的狀態
HAL_GPIO_TogglePin();切換當前PIN的狀態,例如0->1、1->0

找到GPIO的library


LED閃爍實驗,一秒切換一次狀態。



  /* USER CODE BEGIN 2 */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
 HAL_Delay(1000);
  }
  /* USER CODE END 3 */

}
 
  /* USER CODE END 2 */

[STM32]使用Timer中斷

前一個實驗,使用IO來控制LED,並且運用Delay的副程式來讓LED一秒切換一次狀態,但是這樣的作法實際上並不理想,大多數Delay的副程式是使用while迴圈來讓程式空轉,達到延時或計時的效果,這意味著在這空轉的期間,系統的主程式沒辦法做讓何事情。 為了使程式在使用上更有...