void Delay_Init(void) { TIM_TimeBaseInitTypeDef TIM_7; NVIC_InitTypeDef TIM7_UPIT; //¿ªÆôTIM6ΪÏòÉϼÆÊý£¬ÒòΪ¶¨Ê±Æ÷ʱÖÓ»áÓб¶Æµ£¬Æä¹ÒÔÚAPB1 42MHZÉÏ£¬µ«ÊÇÆä´óСΪ84MHZ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE); TIM_7.TIM_ClockDivision=TIM_CKD_DIV1; TIM_7.TIM_CounterMode=TIM_CounterMode_Up; TIM_7.TIM_Period=19999;//É趨ʱ¼äΪ2ms TIM_7.TIM_Prescaler=83; TIM_7.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM7,&TIM_7); TIM_Cmd(TIM7,ENABLE); //¿ªÆôTIM6ÏàÓ¦Öжϣ¬ÉèÖÃÇÀÕ¼ÓÅÏȼ¶Îª×î¸ß£¬ÏìÓ¦ÓÅÏȼ¶Í¬Ñù NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); TIM7_UPIT.NVIC_IRQChannel=TIM7_IRQn; TIM7_UPIT.NVIC_IRQChannelCmd=ENABLE; TIM7_UPIT.NVIC_IRQChannelPreemptionPriority=0; TIM7_UPIT.NVIC_IRQChannelSubPriority=0; NVIC_Init(&TIM7_UPIT); TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE); }
时间: 2023-06-20 08:06:01 浏览: 100
这段代码是用来初始化TIM7定时器的,它的时钟频率为APB1的一半(即42MHz),预分频器为83,所以计数器每计数一次需要的时间为2us。定时器的计数模式为向上计数,计数到19999时产生中断,中断优先级为最高,中断服务函数为TIM7_IRQHandler。这段代码还开启了TIM7定时器和TIM7中断。
相关问题
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure;
这两行代码是在使用STM32系列芯片的定时器功能时所需的初始化结构体和中断配置结构体。
TIM_TimeBaseInitTypeDef是用于初始化定时器基本参数的结构体,其中包含了定时器的时钟分频系数、计数器重载值、计数器模式等参数。
NVIC_InitTypeDef是用于配置芯片中断向量表和中断优先级的结构体,其中包含了中断通道号、中断优先级等参数。
void TIM3_Int_Init(u16 arr,u16 psc)
这是一个函数声明,用于初始化STM32的定时器TIM3中断。其中,arr和psc分别表示自动重装值和预分频系数。具体实现代码如下:
```
void TIM3_Int_Init(u16 arr,u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3时钟
TIM_TimeBaseInitStructure.TIM_Period = arr; //设置自动重装寄存器
TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //设置预分频系数
TIM_TimeBaseInitStructure.TIM_ClockDivision = 0; //设置时钟分割
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数模式为向上计数
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); //初始化TIM3
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //允许更新中断,即计数器溢出中断
TIM_Cmd(TIM3, ENABLE); //使能TIM3
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //指定TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //响应优先级为3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能TIM3中断通道
NVIC_Init(&NVIC_InitStructure); //初始化NVIC
}
```
其中,TIM3_IRQn是TIM3的中断号,需要在中断服务函数中进行处理。