STM32视频教程

基本定时器的使用

作者:陈广
日期:2021-12-4


视频播放地址

点击播放

代码

dht11.c 文件源码:

#include "tim.h"

/* TIM6 init function */
void MX_TIM6_Init(void)
{

  /* USER CODE BEGIN TIM6_Init 0 */

  /* USER CODE END TIM6_Init 0 */

  LL_TIM_InitTypeDef TIM_InitStruct = {0};

  /* Peripheral clock enable */
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM6);

  /* TIM6 interrupt Init */

  /* USER CODE BEGIN TIM6_Init 1 */

  /* USER CODE END TIM6_Init 1 */
  TIM_InitStruct.Prescaler = 7199;
  TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
  TIM_InitStruct.Autoreload = 4999;
  LL_TIM_Init(TIM6, &TIM_InitStruct);
  LL_TIM_DisableARRPreload(TIM6);
  LL_TIM_SetTriggerOutput(TIM6, LL_TIM_TRGO_RESET);
  LL_TIM_DisableMasterSlaveMode(TIM6);
  /* USER CODE BEGIN TIM6_Init 2 */

  /* USER CODE END TIM6_Init 2 */

}

/* USER CODE BEGIN 1 */
void Delay_ms(uint32_t delay)
{
	TIM6->PSC = 7200 - 1;
	TIM6->ARR = 10 * delay - 1;
	TIM6->EGR |= 1;
	TIM6->CR1 = 0x0D;
	while(!(TIM6->SR));
	TIM6->SR = 0;
}

void Delay_us(uint32_t delay)
{
	TIM6->PSC = 8 - 1;
	TIM6->ARR = 9 * delay - 1;
	TIM6->EGR |= 1;
	TIM6->CR1 = 0x0D;
	while(!(TIM6->SR));
	TIM6->SR = 0;
}
/* USER CODE END 1 */

;

© 2018 - IOT小分队文章发布系统 v0.3