查看: 760|回复: 1

[资料] STM32F072 按键中断方式控制LED 频率由慢到快

[复制链接]
  • TA的每日心情

    2018-11-20 13:41
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2020-7-27 15:40:55 | 显示全部楼层 |阅读模式
    分享到:


    /**
      ******************************************************************************
      * File Name          : main.c
      * Date               : 30/12/2014 14:33:58
      * Description        : Main program body
      ******************************************************************************
      *
      * COPYRIGHT(c) 2014 STMicroelectronics
      *
      * Redistribution and use in source and binary forms, with or without modification,
      * are permitted provided that the following conditions are met:
      *   1. Redistributions of source code must retain the above copyright notice,
      *      this list of conditions and the following disclaimer.
      *   2. Redistributions in binary form must reproduce the above copyright notice,
      *      this list of conditions and the following disclaimer in the documentation
      *      and/or other materials provided with the distribution.
      *   3. Neither the name of STMicroelectronics nor the names of its contributors
      *      may be used to endorse or promote products derived from this software
      *      without specific prior written permission.
      *
      * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
      * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
      * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
      * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
      * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
      * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      ******************************************************************************
      */

    /* Includes ------------------------------------------------------------------*/
    #include "stm32f0xx_hal.h"

    /* USER CODE BEGIN Includes */

    /* USER CODE END Includes */

    /* Private variables ---------------------------------------------------------*/

    /* USER CODE BEGIN PV */

    /* USER CODE END PV */

    /* Private function prototypes -----------------------------------------------*/
    void SystemClock_Config(void);
    static void MX_GPIO_Init(void);
    uint16_t nDelay = 500;
    /* USER CODE BEGIN PFP */

    /* USER CODE END PFP */

    /* USER CODE BEGIN 0 */

    /* USER CODE END 0 */

    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();

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

      /* Initialize all configured peripherals */
      MX_GPIO_Init();

      /* USER CODE BEGIN 2 */

      /* USER CODE END 2 */

      /* USER CODE BEGIN 3 */
      /* Infinite loop */
      while (1)
      {
       HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
         HAL_Delay(nDelay );
         HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
         HAL_Delay(nDelay );
      }
      /* USER CODE END 3 */

    }

    /** System Clock Configuration
    */
    void SystemClock_Config(void)
    {

      RCC_OscInitTypeDef RCC_OscInitStruct;
      RCC_ClkInitTypeDef RCC_ClkInitStruct;

      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
      RCC_OscInitStruct.HSIState = RCC_HSI_ON;
      RCC_OscInitStruct.HSICalibrationValue = 16;
      RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
      HAL_RCC_OscConfig(&RCC_OscInitStruct);

      RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
      HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);

      __SYSCFG_CLK_ENABLE();

    }

    /** Configure pins as
            * Analog
            * Input
            * Output
            * EVENT_OUT
            * EXTI
    */
    void MX_GPIO_Init(void)
    {

      GPIO_InitTypeDef GPIO_InitStruct;

      /* GPIO Ports Clock Enable */
      __GPIOC_CLK_ENABLE();
      __GPIOA_CLK_ENABLE();

      /*Configure GPIO pin : PC13 */
      GPIO_InitStruct.Pin = GPIO_PIN_13;
      GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

      /*Configure GPIO pin : PA5 */
      GPIO_InitStruct.Pin = GPIO_PIN_5;
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

      /* EXTI interrupt init*/
      HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
      HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);

    }

    /* USER CODE BEGIN 4 */
    void EXTI4_15_IRQHandler(void)
    {
      /* USER CODE BEGIN EXTI4_15_IRQn 0 */
      
         switch(nDelay)
         {
             case 500:nDelay = 400;break;
             case 400:nDelay = 300;break;
             case 300:nDelay = 200;break;
             case 200:nDelay = 100;break;
             case 100:nDelay = 80;break;
             case 80:nDelay = 50;break;
             case 50:nDelay = 40;break;
             case 40:nDelay = 30;break;
             case 30:nDelay = 20;break;
             case 20:nDelay = 10;break;
             case 10:nDelay = 9;break;
             case 9:nDelay = 8;break;
             case 8:nDelay = 7;break;
             case 7:nDelay = 6;break;
             case 6:nDelay = 5;break;
             case 5:nDelay = 4;break;
             case 4:nDelay = 3;break;
             case 3:nDelay = 2;break;
             case 2:nDelay = 1;break;
             default:nDelay = 500;break;
         }
      /* USER CODE END EXTI4_15_IRQn 0 */
      HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
      /* USER CODE BEGIN EXTI4_15_IRQn 1 */

      /* USER CODE END EXTI4_15_IRQn 1 */
    }

    /* USER CODE END 4 */

    #ifdef USE_FULL_ASSERT

    /**
       * @brief Reports the name of the source file and the source line number
       * where the assert_param error has occurred.
       * @param file: pointer to the source file name
       * @param line: assert_param error line source number
       * @retval None
       */
    void assert_failed(uint8_t* file, uint32_t line)
    {
      /* USER CODE BEGIN 6 */
      /* User can add his own implementation to report the file name and line number,
        ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
      /* USER CODE END 6 */

    }

    #endif

    /**
      * @}
      */

    /**
      * @}
    */

    /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

    [att
    游客,如果您要查看本帖隐藏内容请回复

    nvic.rar

    5.43 MB, 下载次数: 3

    售价: 2 与非币  [记录]

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 21:47 , Processed in 0.130825 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.