STM32L152 基本定时器使用学习
来源:互联网 发布:h.323端口 编辑:程序博客网 时间:2024/06/08 05:17
最近一个项目需要使用定时器功能,下面简单讲述一下STM32L152的定时器使用步骤。
1.使用CubeMX对定时器进行配置,如定时器预分频值,计数值,定时器的触发方式等。
2.下面详细解析相关的代码;
TIM_HandleTypeDef htim3;
void TIM3_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim3.Instance = TIM3;
htim3.Init.Prescaler = 32000-1;//预分频值,本例使用外部8MHz,倍频后是32M,32000分频后为1kHz,预分频值为32000-1,计算公式为:CK_INT/(TIM_Perscaler+1)
htim3.Init.CounterMode = TIM_COUNTERMODE_UP; //上升计数htim3.Init.Period = 1000-1;//计数值,1kHz即计数1000为1s,本例定时1s,计数值为1000-1
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; //设置定时器时钟为内部时钟
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
HAL_TIM_Base_Start(&htim3);//启动定时器
HAL_TIM_Base_Start_IT(&htim3);//启动定时器中断
}
定时器的时钟使能和中断优先级在文件stm32l1xx_hal_msp.c中定义;
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{
if(htim_base->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspInit 0 */
/* USER CODE END TIM3_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM3_CLK_ENABLE();
/* TIM3 interrupt Init */
HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM3_IRQn);
/* USER CODE BEGIN TIM3_MspInit 1 */
/* USER CODE END TIM3_MspInit 1 */
}
}
下面是定时器的中断函数,定时时间到,标志位置位:
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim3);
TIM3_Flag=SET;
}
在主程序中添加自己定义的事情:
while(1)
{
if(TIM3_Flag==SET)
{
TIM3_Flag=0;//清除标志
//添加自己定义的代码
。。。
}
}
- STM32L152 基本定时器使用学习
- STM32L152 ADC使用总结
- STM32L152 RTC 使用
- STM32定时器学习---基本定时器
- STM32CubeMX学习:基本定时器
- STM32L152 RTC 日历和定时中断使用
- STM32学习--定时器(基本定时器)
- spring定时器的基本使用
- Timer定时器的基本使用
- STM32F10x 学习笔记10(基本定时器)
- STM32通用定时器---基本定时学习
- STM32F10x 学习笔记之基本定时器
- STM32学习笔记:通用定时器基本设定
- STM32F10x 学习笔记10(基本定时器)
- Libevent学习——定时器基本运用
- [RTT例程练习] 4.1 定时器基本使用
- stm32 基本定时器TIM6、TIM7的使用
- STM32L152 USART
- Android 大小两个Surface切换
- hibernate配置
- 机器学习(5)Bagging和Boosting 概念及区别
- IntelliJ Idea 常用快捷键列表
- C# json 序列化 匿名对象序列号 指定对象序列化
- STM32L152 基本定时器使用学习
- 【论文阅读笔记】Deepr: A Convolutional Net for Medical Records
- VisualSVN Server的配置和使用方法【服务器端】
- 【C/C++】嵌套类
- Java Web技术内幕笔记-DNS解析
- luogu P1192 台阶问题
- MySQL--基础命令
- Allocate exception for servlet XXX 基本异常
- Wiki上的数字音频介绍