結(jié)合設(shè)計(jì)經(jīng)驗(yàn)與營(yíng)銷實(shí)踐,提供有價(jià)值的互聯(lián)網(wǎng)資訊
發(fā)布日期:2023-06-10瀏覽次數(shù):511 來(lái)源:福州網(wǎng)站建設(shè)
以下是使用STM32Cube HAL庫(kù)編寫的初始化定時(shí)器TIM2的程序,定時(shí)器的時(shí)鐘頻率為72MHZ,定時(shí)時(shí)間為20ms:
#include "stm32f1xx_hal.h"
TIM_HandleTypeDef htim2;
void TIM2_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7199; // Prescaler值為7199,定時(shí)器時(shí)鐘頻率為72MHz/(Prescaler+1)=10KHz
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 19999; // Period值為19999,定時(shí)器計(jì)數(shù)器每計(jì)數(shù)到19999會(huì)產(chǎn)生一個(gè)中斷,對(duì)應(yīng)20ms
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
}
void Error_Handler(void)
{
// 處理錯(cuò)誤的代碼
}
在這個(gè)程序中,我們使用了STM32Cube HAL庫(kù)提供的函數(shù)來(lái)初始化定時(shí)器TIM2。在函數(shù)TIM2_Init中,我們首先定義了一個(gè)TIM_ClockConfigTypeDef類型的變量sClockSourceConfig和一個(gè)TIM_MasterConfigTypeDef類型的變量sMasterConfig,然后對(duì)htim2這個(gè)TIM_HandleTypeDef類型的變量進(jìn)行了初始化。具體地,我們將定時(shí)器的時(shí)鐘頻率設(shè)置為72MHz,將Prescaler值設(shè)置為7199,這樣定時(shí)器時(shí)鐘頻率就為10KHz;將CounterMode設(shè)置為TIM_COUNTERMODE_UP,表示計(jì)數(shù)器會(huì)向上計(jì)數(shù);將Period值設(shè)置為19999,當(dāng)計(jì)數(shù)器計(jì)數(shù)到19999時(shí)會(huì)產(chǎn)生一個(gè)中斷,從而實(shí)現(xiàn)20ms的定時(shí);將ClockDivision設(shè)置為TIM_CLOCKDIVISION_DIV1,表示不進(jìn)行時(shí)鐘分頻;將AutoReloadPreload設(shè)置為TIM_AUTORELOAD_PRELOAD_ENABLE,表示使能自動(dòng)重載寄存器。最后,我們使用HAL_TIM_Base_Init函數(shù)對(duì)定時(shí)器進(jìn)行初始化,使用HAL_TIM_ConfigClockSource函數(shù)配置時(shí)鐘源,使用HAL_TIMEx_MasterConfigSynchronization函數(shù)配置定時(shí)器主從模式。如果初始化過(guò)程中發(fā)生錯(cuò)誤,則會(huì)跳轉(zhuǎn)到Error_Handler函數(shù)進(jìn)行錯(cuò)誤處理。
需要注意的是,在使用這個(gè)程序之前,需要先調(diào)用HAL_RCC_OscConfig函數(shù)對(duì)系統(tǒng)時(shí)鐘進(jìn)行配置。
以上是由福州網(wǎng)站建設(shè)的小編為你分享了"編寫一個(gè)初始化定時(shí)器TIM2的程序,定時(shí)器的時(shí)鐘頻率為72MHZ要求定時(shí)時(shí)間為20ms"文章,如果你在這方面有什么問(wèn)題,隨時(shí)聯(lián)系我們