STM32学习记录 通用定时器TIM

来源:本站
导读:目前正在解读《STM32学习记录 通用定时器TIM》的相关信息,《STM32学习记录 通用定时器TIM》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32学习记录 通用定时器TIM》的详细说明。
简介:经过两天的研究,逛各种坛子,不断测试,
发现网上很多代码实际上都只有两三个版本,但是都不工作或者说不正常工作。。。

经过两天的研究,逛各种坛子,不断测试,发现网上很多代码实际上都只有两三个版本,但是都不工作或者说不正常工作。。。东拼西凑,不断调试,终于找出了通用定时器的可以工作的配置。时钟配置不是问题,问题在于TIM的初始化。网上各种资料都不正确。导至定时器一直只以一个频率工作,而且按资料来说正确范围内的参数实际却不工作。时钟配置 NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; /*TIM3中断*/ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*先占优先级0级*/ NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /*从优先级3级*/ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /*IRQ通道被使能*/ NVIC_Init(&NVIC_InitStructure); TIM初始化设置 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* 时钟使能 */ /*定时器TIM3初始化*/ TIM_TimeBaseStructure.TIM_Period = 7200;/*周期的值*/ TIM_TimeBaseStructure.TIM_Prescaler = 10000;/* 预分频值 */ //跟据程序实际CNT的取值看,应该TIM_Period才是预分频值 //虽然资料说这两个取值在0x0000~0xFFFF,但是好像取值超过一定值就不工作,具体是多少没测,但是很多数值都不工作。 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/*设置时钟分割:TDTS = Tck_tim*/ //这里与资料上也不相同,好像设任何值(1,2,4)都不影响计步速度。 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /* TIM向上计数模式*/ TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /*根据指定的参数初始化TIMx的时间基数单位*/ TIM_PrescalerConfig(TIM3, 7200-1, TIM_PSCReloadMode_Immediate); //如果不加这句,定时器会以200次/秒 左右的周期溢出,不论前面周期,预分频和时钟如何设置。 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); /*使能指定的TIM3中断,允许更新中断*/中断配置 if(TIM_GetITStatus(TIM3, TIM_IT_Update) !=RESET) { TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update); /*处理事件。。。*/ }

提醒:《STM32学习记录 通用定时器TIM》最后刷新时间 2024-03-14 01:11:18,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32学习记录 通用定时器TIM》该内容的真实性请自行鉴别。