STM32F769NI-Discovery开发笔记(三)TIM定时器

开发环境:
开发板:STM32F769NI-Discovery
KEIL版本:5.33
STM32CubeMX版本:6.3.0
 
本篇主要讲STM32F769NI的定时器的实现,前面涉及到的外设配置本篇不在重复说明
不同的TIM功能不同,本篇只讲基础的定时器功能,所以只使用TIM6,详情请查看Reference manual
根据参考手册得出TIM6是挂在APB1的时钟下
0
 
根据系统时钟的配置得出当前APB1的tim时钟为108Mhz
0
 
配置TIM6定时器10ms触发一次的中断
定时器触发时间计算
1/(108000000/(107+1)/(9999+1) ) 单位s
0
开启TIM6中断服务,中断优先级根据自己需求更改
0
配置完成后生成代码
代码如下
//定义定时器计数变量
uint16_t Tim6Count = 0;
//定时器回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim == &htim6)
  {       
     //10ms定时器计数,1s进行LED2反转     
    if(Tim6Count < 100)
    {
      Tim6Count++;
    }
    else
    {
      Tim6Count = 0;
      HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
    }
  }
} 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(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_USART1_UART_Init(); MX_TIM6_Init(); /* USER CODE BEGIN 2 */ //config uart reveive buff HAL_UART_Receive_DMA(&huart1,&RxBuff,sizeof(RxBuff)); //开启TIM6定时器 HAL_TIM_Base_Start_IT(&htim6); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //sys running state led HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); HAL_Delay(200); } /* USER CODE END 3 */ }

 

至此,TIM6定时器功能完成啦
 
 
 
 
 
 
 
 
 
 
posted @ 2022-08-31 16:58  Jeremy_CJL  阅读(127)  评论(0)    收藏  举报