BearPi Std 板从入门到放弃 - 引气入体篇(6)(定时器TIM2)

简介

基于前面几篇, 增加定时器方面内容, LED定时闪动, 串口定时打印;
如前几篇所说, 使用BearPi Std板进行学习测试, 本例
开发板 : Bearpi Std(小熊派标准板)
主芯片: STM32L431RCT6
LED :  PC13 \ 推挽输出即可 \ 高电平点亮 
串口:  Usart1
定时器: TIM2/预分频(2000-1)/计数周期(10000-1)/定时1s/APB1 Time Clock设置20MHz

步骤

  1. 基于前面的项目, 创建STM32CubeMX项目
    BearPi Std 板从入门到放弃 - 引气入体篇(5)(printf打印到串口)

  2. 新增TIM2的定时器配置
    配置TIM2\内部中断\预分频值(2000-1)\计数周期(10000-1)BearPi Std 板从入门到放弃 - 引气入体篇(6)(定时器TIM2)_第1张图片
    开启TIM2 定时器中断
    BearPi Std 板从入门到放弃 - 引气入体篇(6)(定时器TIM2)_第2张图片
    配置APB1时钟输出20MHz
    BearPi Std 板从入门到放弃 - 引气入体篇(6)(定时器TIM2)_第3张图片

  3. 生成项目BearPi_TIM2

  4. 加入用户代码

int main(void)
{
  ...
  /* USER CODE BEGIN 2 */
	HAL_TIM_Base_Start_IT(&htim2); // 开启定时器中断
  /* USER CODE END 2 */

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

    /* USER CODE BEGIN 3 */
		HAL_Delay(8000); 
  }
  /* USER CODE END 3 */
}

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin); // LED等亮灭
	printf("Are You OK!!!\r\n"); // 打印信息到串口
}
/* USER CODE END 4 */

前言后说

关于时间的计算公式如下 : 
Tout = ((arr+1)*(psc+1))/Tclk
	Tclk为定时器的输入时钟频率
	Tout则为定时器溢出时间
	arr为计数周期
	psc为预分频器的值
所以本例中1s的定时中断 就是 
1s = ((10000-1+1) * (2000-1+1)) / 20MHz

BearPI_TIM2 完整工程代码

参考:
定时器计算方法

你可能感兴趣的:(嵌入式吧,单片机,嵌入式硬件,BearPi,STM32CubeMX,STM32)