找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2234|回復(fù): 0
收起左側(cè)

STM32F407跑馬燈實驗

[復(fù)制鏈接]
ID:761160 發(fā)表于 2020-5-26 15:30 | 顯示全部樓層 |閱讀模式
跑馬燈實驗
一、實驗?zāi)康呐c要求

1、熟悉GPIO的使用方法,熟悉HAL固件庫中GPIO庫函數(shù)的使用方法

2、熟悉Timer2的使用方法,熟悉HAL固件庫中通用定時器(TIM) 庫函數(shù)的使用方法

3、熟悉嵌套向量中斷控制器(NVIC),熟悉STM32固件庫中NVIC庫函數(shù)的使用方法,進(jìn)一步熟悉中斷程序編寫

二、實驗設(shè)備

SUN ESMC01實驗儀(含STM32F407模塊)一套、ARM仿真器一套、PC機(jī)一臺

三、實驗內(nèi)容

1、編寫程序:控制STM32F407核心板上的4個指示燈DS1~DS4,,循環(huán)點(diǎn)亮,瞬間只有一個燈亮,使用Timer2產(chǎn)生延時。

2、觀察實驗結(jié)果,驗證程序是否正確。

基于延時

while (1)

  {     

        //LED1 turned on, LED4 turned off

        HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_SET);

        HAL_Delay(1000);  

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,GPIO_PIN_RESET);               

        // LED2 turned on, LED1 turned off

        HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_SET);

        HAL_Delay(1000);

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET);

        // LED3 turned on, LED2 turned off

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_SET);

        HAL_Delay(1000);

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_RESET);              

        // LD4 turned on, LD3 turned off

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,GPIO_PIN_SET);

        HAL_Delay(1000);

        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,GPIO_PIN_RESET);              



  }

基于計時器

intmain(void)

{

  int   t= 0;

  lighton = 0;              //500mssign

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  MX_TIM2_Init();

  __HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE);//清除中斷

  HAL_TIM_Base_Start_IT(&htim2) ;           //啟動時鐘

  while (1)

  {

        if (lighton)

    {

        lighton = 0;                       //500ms sign

        switch(t)

        {

        case 0:

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3, GPIO_PIN_RESET);     //LED4off

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_SET);      //LED1 on

          break;

        case 1:

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_RESET);     //LED1off

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_SET);      //LED2 on

          break;

        case 2:

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_RESET);     //LED2off

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_SET);       //LED3 on

          break;

        case 3:

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_RESET);     //LED3off

          HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3, GPIO_PIN_SET);       //LED4 on

          break;

        }

        t++;

        t &= 0x3;

    }

  }

}



voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

    if (htim == &htim2)

    {

        lighton = 1;

    }



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表