您的位置 首页 技术

STM32F051R8T6的通用定时器装备

将系统时钟24分频,计数频率为48MHz/24=2MHz,则计一个数的时间为0.5us。计满1000个数的时间为0.5ms。这就是TIM3的定时周期。voidTIM…

将体系时钟24分频,计数频率为48MHz/24 = 2MHz,则计一个数的时刻为0.5us。计满1000个数的时刻为0.5ms。这便是TIM3的守时周期。


void TIM3_Configuration(void) //每0.5ms发生一次更新事情(进入中止服务程序).
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM_DeInit(TIM3); //从头将Timer设置为缺省值
TIM_InternalClockConfig(TIM3); //选用内部时钟给TIM3供给时钟源
TIM_ARRPreloadConfig(TIM3, DISABLE); //制止ARR预装载缓冲器 预装载寄存器的内容被当即传送到影子寄存器

TIM_TimeBaseStructure.TIM_Prescaler = 24-1; //预分频系数为24-1,这样计数器计数频率为48MHz/24 = 2MHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟切割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器形式为向上计数模
TIM_TimeBaseStructure.TIM_Period = 1000; //设置计数溢出巨细,每计1000个数就发生一个更新事情
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //将装备应用到TIM3中

TIM_ClearFlag(TIM3, TIM_FLAG_Update); //铲除溢出中止标志
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //使能TIM3的更新中止
TIM_Cmd(TIM3, ENABLE); //敞开守时器3

//Enable the TIM3 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

stm32f0xx_it.c文件中


//———————————0.5ms中止一次—————————————
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3 TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
//增加代码

}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/276328.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部