STM32通用定时器TIM25基本用法
时间:11-19
来源:互联网
点击:
STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。从系统框架图下看,名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总线上。其中TIM1&TIM8称为高级控制定时器(advancedcontroltimer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。
按以下步骤编程:
1.系统初始化,主要初始化时钟等。
2.GPIO初始化,用于LED,有了灯就便于观察了。
3.TIM3的配置。
4.NVIC的配置。
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);}}
STM32通用定时器TIM2 相关文章:
- STM32学习笔记——利用通用定时器TIM2进行精确延时(11-28)
- STM32通用定时器(TIM2-5)PWM输出(11-27)
- STM32通用定时器(TIM2-5)基本用法(11-10)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)