您的位置 首页 测评

STM32通用定时器TIM25根本用法

STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。从系统框架图…

STM32的守时器是个强壮的模块,守时器运用的频率也是很高的,守时器能够做一些根本的守时,还能够做PWM输出或许输入捕获功用。从体系结构图下看,名为TIMx的有八个,其间TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总线上。其间TIM1&TIM8称为府第操控守时器(advancedcontroltimer).他们地点的APB2总线也比APB1总线要好。APB2能够作业在72MHz下,而APB1最大是36MHz。

由上图可知,当APB1的预分频系数为1 时,这个倍频器不起作用,守时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8 或16)时,这个倍频器起作用,守时器的时钟频率等于APB1的频率两倍。也便是,当APB1不分频,TIM3的时钟速度为36MHz,当2分频是,APB1变成18MHz,可是TIM又会倍频,即TIM时钟等于18*2=36MHz。这儿咱们用向上计数的方法,即TIMx_CNT中的计数值到达TIMx_ARR中的值时,发生中止,TIMx_CNT又从0开端计。

按以下过程编程:
1.体系初始化,首要初始化时钟等。

2.GPIO初始化,用于LED,有了灯就便于调查了。

3.TIM3的装备。

4.NV%&&&&&%的装备。

5.编写中止服务函数。

void GPIO_PA_Init(){//PA8管脚装备GPIO_InitTypeDef GPIO_InitStructure;GPIO_DeInit(GPIOA);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能端口时钟AGPIO_Init(GPIOA,&GPIO_InitStructure);}void TIMER3_Init(){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_DeInit(TIM3);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);TIM_TimeBaseStructure.TIM_Period=10000;//ARR的值TIM_TimeBaseStructure.TIM_Prescaler=7200-1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);TIM_Cmd(TIM3, ENABLE); //舱位时钟}void NVIC_Configuration(){  NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  // 抢占式优先等级 NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQChannel;//指定中止源NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;// 指定呼应优先等级1NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;NVIC_Init(&NVIC_InitStructure);}int main(void){     Stm32_Clock_Init(9); //体系时钟设置delay_init(72);     //延时初始化GPIO_PA_Init();TIMER3_Init();NVIC_Configuration();while(1); }void TIM3_IRQHandler(){if(TIM_GetITStatus(TIM3 , TIM_IT_Update) ==SET){TIM_ClearITPendingBit(TIM3 ,TIM_FLAG_Update);if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8))GPIO_ResetBits(GPIOA, GPIO_Pin_8);else GPIO_SetBits(GPIOA,GPIO_Pin_8);}}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部