历史上的今天
今天是:2025年02月12日(星期三)
2019年02月12日 | STM32-基本定时器Timer的使用
2019-02-12 来源:eefocus
前言:
最近在调试STM32L152芯片的定时器功能,本文总结下STM32L152芯片基本定时器的使用方法。
硬件平台:STM32L152
软件平台:keil v5+cubeMX
函数库:HAL库
基本定时器使用方法
下面简单讲述一下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;//清除标志
//添加自己定义的代码
。。。
}
}
史海拾趣
|
电烙铁一般分为内热式、外热式和速热式,功率由20W、25W,大至几百瓦。购买和选用时要注意,外热式电烙铁制造工艺复杂、效率低、价格高,速热式的由于大变压器拿在手上,操作困难;内热式电烙铁结构简单,热效率高,轻巧灵活,当为首选。用作装修晶 ...… 查看全部问答> |
|
求助:H桥电路中桥臂直通的问题! 在H桥电路中,即使驱动电路设置了死区,但如果工作频率很快,也会引起H桥的桥臂直通,进而烧坏mos管。请问哪位大侠知道解决的办法,小弟在这里谢了先!… 查看全部问答> |
|
【EEWORLD带你DIY】示波器V2.0信号板及人机界面板打样归来~~ 活动介绍:使用Altera Cyclone III FPGA Stater 进行DIY示波器进程: https://www.eeworld.com.cn/zhuanti/20100703altera/20100703altera.html 信号板及人机界面板打样归来,上图 … 查看全部问答> |
|
一个简单程序(UART),不晓得问题出在那里,请大家帮哈忙! 以下代码是UART0操作:收到上位机的字符然后转送回去。结果是能收到,但是是错误的,如发 01 收到 C0,请大家看看是那里出错了,小弟刚开始用430。 /**************************************************** 说明:串口测试程序 波特率:9600bps ...… 查看全部问答> |




