STM32F769NI-Discovery开发笔记(三)TIM定时器
开发环境:
开发板:STM32F769NI-Discovery
KEIL版本:5.33
STM32CubeMX版本:6.3.0
本篇主要讲STM32F769NI的定时器的实现,前面涉及到的外设配置本篇不在重复说明
不同的TIM功能不同,本篇只讲基础的定时器功能,所以只使用TIM6,详情请查看Reference manual
根据参考手册得出TIM6是挂在APB1的时钟下

根据系统时钟的配置得出当前APB1的tim时钟为108Mhz

配置TIM6定时器10ms触发一次的中断
定时器触发时间计算
1/(108000000/(107+1)/(9999+1) ) 单位s

开启TIM6中断服务,中断优先级根据自己需求更改

配置完成后生成代码
代码如下
//定义定时器计数变量
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定时器功能完成啦
浙公网安备 33010602011771号