【无标题】

STM32F103 HAL库 TIM通用定时器-内部定时功能实现 ing...

定时器分类介绍(来自野火指南者开放板资料)

【无标题】

STM32CubeMX 配置文件

  1. 找到对应STM32型号,配置SYS和RCC串口烧录和外部晶振的选择
  2. 找到对应TIMx定时器,选择 internal clock (内部时钟源)一般均选择这个选项。其他都不需要选。
    【无标题】
    3.时钟配置
    一般均设为最大 72Mhz
    【无标题】

4.parameter Settings
PSC 预分频器值(PSC):0~65535 (分频值)
Counter Mode :UP (定时器计数模式)
Counter Period(ARR):1~65536 (自动重载值)
auto-reload preload:Enable (自动转入重载值?)

定时时间计算:
HCLK=72Mhz
定时时间(秒)=1/(HCLK)(PSC+1)(ARR+1)
最终计算出来的是
以秒为单位* 注意!!!

【无标题】NVIC Setting 配置 (使能) 【无标题】

例程代码

HAL库TIM中断开启函数

  __HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);//清除TIM定时器标志位
  HAL_TIM_Base_Start_IT(&htim3);//开启内部定时器tim3
  

TIM初始化函数

 void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(LED_ON_GPIO_Port, LED_ON_Pin, GPIO_PIN_RESET);

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = LED_ON_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_ON_GPIO_Port, &GPIO_InitStruct);

}

HAL库TIM中断回调函数配置

//TIM定时返回函数
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)//回调函数
{
	if(htim->Instance == TIM3)//判断进入回调函数方式?
	{
		__HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);//清除标志位
		
		HAL_TIM_Base_Stop_IT(&htim3);//停止定时器
		
		printf("1");//测试USART打印函数
		HAL_GPIO_TogglePin(LED_ON_GPIO_Port, LED_ON_Pin);//LED端口反转
		
		HAL_TIM_Base_Start_IT(&htim3);//开启定时器
		 
	}
}

USART 打印函数配置

 int fputc(int ch, FILE *f)
{
	HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 1000);	
	return (ch);
}
上一篇:STM32CubeMX | STM32使用HAL库的ADC多通道数据采集


下一篇:蓝桥杯学习笔记八:捕获计数器