农产品网站如何做地推,家具行业网站整站模板,建网站公司营销型网站建设,南通市 网站设计1、定时器就是计数器。 2、怎么计数#xff1f; 3、我们需要有一恒定频率的方波信号#xff0c;再加上一个寄存器。 4、比如每来一个上升沿信号#xff0c;寄存器值加1#xff0c;就可以完成计数。 5、假设方波频率是100Hz#xff0c;也就是1秒100个脉冲。… 1、定时器就是计数器。 2、怎么计数 3、我们需要有一恒定频率的方波信号再加上一个寄存器。 4、比如每来一个上升沿信号寄存器值加1就可以完成计数。 5、假设方波频率是100Hz也就是1秒100个脉冲。那寄存器值到达100时我们就知道时间过去了1秒钟。 好好好非常好。
1、基本定时器 1、对于STM32F103来说使用外部晶振基本定时器的最高频率可以达到72MHz。也就是1秒钟72*1 000 000次。 2、计数器是一个16bit的数据。最大为65536。65536 ÷ 72 000 000 0.0009秒。即最多只能定时器0.0009秒显示不太合适。所以
1.1、预分频器 1、预分频器就诞生了。它的作用是可以将定时器的频率进行分频。 2、比如预分频器Prescaler设置为1则是二分频36MHz。 Prescaler设置为2则是三分频24MHz。 3、预分频器也是一个16bit的数据最大设置为65535分频。
1.2、自动重装载值 1、其作用是当计数器计到与自己相同值时便将计数器的值重置为0。 2、如果想定时m个脉冲 就需要设置自动重装载值为m-1因为计数是从0开始的。
2、普通计数使用
2.1、相关函数介绍 一、关于计数器 ①获取计数器的值
__HAL_TIM_GET_COUNTER(htim2);②设置计数器的值
__HAL_TIM_SET_COUNTER(htim2);二、关于自动重装载值 ①获取自动重装载值
__HAL_TIM_GET_AUTORELOAD();①设置自动重装载值
__HAL_TIM_SET_AUTORELOAD();三、关于预分频器 ①设置预分频器值
__HAL_TIM_SET_PRESCALER();四、开启定时器
HAL_TIM_Base_Start();2.2、配置 1、这里配置定时器2这里选择内部时钟预分频器设置为7200-1即7200分频分频后频率为10000Hz就是一秒计数10000次。 2、自动重装载值设置为10000-1。即每计时1秒计数器值就会达到10000-1然后清0。 3、cubeide配置如下
2.3、代码
HAL_TIM_Base_Start(htim2);
while (1)
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 */counter __HAL_TIM_GET_COUNTER(htim2);sprintf(message,counter %d\r\n,counter);HAL_UART_Transmit_IT(huart1, (uint8_t *)message, strlen(message));HAL_Delay(99);
}2.4、效果 每隔100ms计数器加1000。
3、定时器更新中断使用 1、实现定时器计数每次到达自动重装之后触发中断完成一些任务然后继续计数。
3.1、配置 2、接着上面的配置增加如下配置
3.2、代码
//开启定时器中断
HAL_TIM_Base_Start_IT(htim2);//重写定时器中断函数HAL_TIM_PeriodElapsedCallback
char data[] ^_^ ^_^ ^_^ ^_^;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim htim2){HAL_UART_Transmit_DMA(huart1, (uint8_t *)data, strlen(data));//串口发送数据HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);//led翻转}
}3.3、效果 4、框图 1、万变不离其宗框图如下