南联网站建设推广,商业计划书范文,网站主机有什么用,白云网站 建设信科网络这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 文章目录 前言一、定时器基础知识二、cubeMX 配置三、定时时长四、自动生成代码讲解五、实验程序总结 前言
实验开发板#xff1a;STM32F103C8T6。所需软件#xff1a;keil5 #xff0c; cubeMX 。实验目的#xff… 这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 文章目录 前言一、定时器基础知识二、cubeMX 配置三、定时时长四、自动生成代码讲解五、实验程序总结 前言
实验开发板STM32F103C8T6。所需软件keil5 cubeMX 。实验目的了解 cubeMX 定时器 的配置和使用。实验使用定时器控制 led 闪烁。 一、定时器基础知识
STM32的定时器是用于时间测量和事件生成的复杂工具。可以使用内部或外部时钟源。时钟源和分频设置将决定定时器计数的速度。
定时器可以配置为在特定事件(如溢出或匹配特定值上触发中断。这使得它能够周期性地执行代码片段例如读取传感器数据或刷新显示。 定时器的主要组件 计数器定时器的核心部分可以配置向上/向下 计数。预分频器分频定时器的输入时钟改变计数器的计数速率。如果时钟速度是72MHz并使用预分频值为7199那么计数器的计数速度将是10kHz。72MHz / 7199自动重载寄存器ARR, Auto-reload register:定义了计数器重置的值。 二、cubeMX 配置 选择芯片。 配置仿真。 配置时钟选择 HSE, 高速时钟。 配置时钟树。选择最大 72 MHZ, 然后双击 enter 即可。系统会自动配置最合适的时钟。 设置工程名路径和工具链。 自动生成 .c / .h 文件。 将 led 引脚设置输出。 让 led 引脚默认输出高电平。因为 根据实际电路当引脚是低电平时led 点亮。 这里我使用 定时器2 , 并使用 内部时钟源。 使能定时器中断。 设置 定时器参数分频系数向上计数自动重装载值。 创建工程。
三、定时时长
定时时长 计数器自动重载值 1 * 分频系数 1 / 定时器时钟频率 为什么重装载值和分频系数不置为整数 原因精越定时 这里 我想要设置 定时时长为 1ms 那么首先设置相关参数
定时器时钟频率 : 72 MHZ。分频系数 PSC 选择 72 分频。计数器自动重载值ARR可控制定时器的定时时间改变定时时长。
因为 分频系数 / 定时器时钟频率 计数器的计数速率, 所以 72 / 72MHZ 1us 。则每 1 us 计数一次。当计数到 1000 (ARR) 时 发生定时器的溢出中断. 即 ARR 从 0 增加到 1000 ,每 1 us 增加一次则 定时时长为 1000 * 1 us 1 ms .
四、自动生成代码讲解
自动生成的 定时器的代码在 tim.c 文件中。
首先还是 先定义一个 定时器对象这是一个结构体。初始化这个结构体中的相关参数。调用 HAL_TIM_Base_Init(htim2) 对其初始化。之后自动调转到HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) 执行。 5. __HAL_RCC_TIM2_CLK_ENABLE( ); 开启定时器 2HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); 设置优先级 HAL_NVIC_EnableIRQ(TIM2_IRQn); 使能中断
五、实验程序
开启定时器中断
HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);定时器中断回调函数
/* 发生定时器中断后调用定时器中断回调函数 */HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);定时器控制 led 闪烁
static int i0;/* 根据cubeMX 配置的参数确定多久触发定时器中断这里 是每 1 ms 触发一次中断即调用该函数 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim htim2){if(i 1000) // 当 i 加到 1000 时则时间到达 1 s, 翻转 led 电平{i0;HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_4);}}
}总结
下篇文章为大家介绍 串口 的相关知识。