你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1013|回复: 0

[STM32L496] 【NUCLEO-L496ZG评测2】定时器中断,继续点灯之旅

[复制链接]

14

主题

521

回帖

19

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-5-16 18:51:35 | 显示全部楼层 |阅读模式
第二篇就是熟悉一下定时器,这都是常用的功能外设,当然验证定时器的中断还是得用LED灯才能看到效果。看Datasheet的话,会发现芯片有16个定时器。先试试16bit普通的定时器中断。
首先初始化库,时钟配置,如下所示:
  1. /** System Clock Configuration
  2. */
  3. void SystemClock_Config(void)
  4. {

  5.   RCC_OscInitTypeDef RCC_OscInitStruct;
  6.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  7.     /**Initializes the CPU, AHB and APB busses clocks
  8.     */
  9.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  10.   RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
  11.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  12.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  13.   RCC_OscInitStruct.PLL.PLLM = 1;
  14.   RCC_OscInitStruct.PLL.PLLN = 20;
  15.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  16.   RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
  17.   RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
  18.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }

  22.     /**Initializes the CPU, AHB and APB busses clocks
  23.     */
  24.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  25.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  26.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  27.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  28.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV16;
  29.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  30.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
  31.   {
  32.     Error_Handler();
  33.   }

  34.     /**Configure the main internal regulator output voltage
  35.     */
  36.   if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK)
  37.   {
  38.     Error_Handler();
  39.   }

  40.     /**Configure the Systick interrupt time
  41.     */
  42.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  43.     /**Configure the Systick
  44.     */
  45.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  46.   /* SysTick_IRQn interrupt configuration */
  47.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  48. }
复制代码

初始化引脚:
  1. GPIO_InitTypeDef GPIO_InitStruct;

  2.   /* GPIO Ports Clock Enable */
  3.   __HAL_RCC_GPIOH_CLK_ENABLE();
  4.   __HAL_RCC_GPIOB_CLK_ENABLE();

  5.   /*Configure GPIO pin Output Level */
  6.   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);

  7.   /*Configure GPIO pin : PB14 */
  8.   GPIO_InitStruct.Pin = GPIO_PIN_14;
  9.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  10.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  11.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  12.   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
复制代码

初始化定时器2
  1. TIM_ClockConfigTypeDef sClockSourceConfig;
  2.   TIM_MasterConfigTypeDef sMasterConfig;

  3.   htim2.Instance = TIM2;
  4.   htim2.Init.Prescaler = 9999;
  5.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  6.   htim2.Init.Period = 999;
  7.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  8.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  9.   {
  10.     Error_Handler();
  11.   }

  12.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  13.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  14.   {
  15.     Error_Handler();
  16.   }

  17.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  18.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  19.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  20.   {
  21.     Error_Handler();
  22.   }
  23.   HAL_TIM_Base_Start_IT(&htim2);
复制代码

中断响应部分:
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  2. {
  3.      HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_14);
  4.     /* Insert delay 100 ms */
  5. //    HAL_Delay(100);
  6. }
复制代码

效果如图


图1

图1
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版