版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32STM32的中断、定时器的中断、定时器暨南大学电子设计大赛培训资料20112011年年7 7月月2424日日 彭煜彭煜目录目录 什么是什么是“中断中断”?1 STM32STM32中的优先级概念中的优先级概念2 STM32STM32外部中断例程讲解外部中断例程讲解3STM32STM32的定时器简介的定时器简介 4 STM32 STM32定时器例程讲解定时器例程讲解5什么是什么是“中断中断”?中断服务程序中断服务程序发申请发申请中断服务程序中断服务程序发申请发申请外外设设CPU CPU CPU执行程序时,由于发生了某种随机的事件执行程序时,由于发生了某种随机的事件( (外部外部或内部或内
2、部) ),引起,引起CPUCPU暂时中断正在运行的程序,转去执行暂时中断正在运行的程序,转去执行一段特殊的服务程序一段特殊的服务程序( (中断服务子程序或中断处理程序中断服务子程序或中断处理程序) ),以处理该事件,该事件处理完后又返回被中断的程序继以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。续执行,这一过程称为中断。 EGEG:吃饭时突然手机铃响:吃饭时突然手机铃响中中断断示示意意图图STM32STM32中的优先级概念中的优先级概念 STM32(Cortex-M3) STM32(Cortex-M3)中有两个优先级的概念:中有两个优先级的概念:抢占式优先级抢占式优
3、先级和和响响应优先级应优先级,也把响应优先级称作,也把响应优先级称作“亚优先级亚优先级”或或“副优先级副优先级”,每,每个中断源都需要被指定这两种优先级。个中断源都需要被指定这两种优先级。1. 1. 何为占先式优先级何为占先式优先级(pre-emption priority)(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序高占先式优先级的中断事件会打断当前的主程序/ /中断程序运中断程序运行行抢断式优先响应,俗称抢断式优先响应,俗称中断嵌套中断嵌套。2. 2. 何为副优先级何为副优先级(subpriority)(subpriority) 在占先式优先级相
4、同的情况下,高副优先级的中断优先被响应;在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行,在占先式优先级相同的情况下,如果有低副优先级中断正在执行,高副优先级的中断要等待已被响应的低副优先级中断执行结束后才高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应能得到响应非抢断式响应非抢断式响应( (不能嵌套不能嵌套) )。3. 3. 判断中断是否会被响应的依据判断中断是否会被响应的依据 首先是占先式优先级,其次是副优先级;首先是占先式优先级,其次是副优先级; 占先式优先级决定是否会有中断嵌套;占先式优先级决定是否会
5、有中断嵌套;4. 4. 优先级冲突的处理优先级冲突的处理 具有高抢占式优先级的中断可以在具有低抢占式优先级的中具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即断处理过程中被响应,即中断的嵌套中断的嵌套,或者说高抢占式优先级的,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才
6、能被处理。如果这到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断两个中断同时到达同时到达,则中断控制器根据他们的响应优先级高低来,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。等,则根据他们在中断表中的排位顺序决定先处理哪一个。STM32STM32中的优先级概念中的优先级概念 5. stm325. stm32中对中断优先级的定义中对中断优先级的定义 STM32STM32中指定中断优先级的寄存器位有中指定中断优先级的寄存器位有
7、4 4位,这位,这4 4个寄存器位的分组个寄存器位的分组方式如下:方式如下: 第第0 0组:所有组:所有4 4位用于指定响应优先级位用于指定响应优先级第第1 1组:最高组:最高1 1位用于指定抢占式优先级,最低位用于指定抢占式优先级,最低3 3位用于指定响应优先级位用于指定响应优先级第第2 2组:最高组:最高2 2位用于指定抢占式优先级,最低位用于指定抢占式优先级,最低2 2位用于指定响应优先级位用于指定响应优先级第第3 3组:最高组:最高3 3位用于指定抢占式优先级,最低位用于指定抢占式优先级,最低1 1位用于指定响应优先级位用于指定响应优先级第第4 4组:所有组:所有4 4位用于指定抢占式
8、优先级位用于指定抢占式优先级具体怎样具体怎样设置在例设置在例程中详细程中详细讲解讲解! !STM32STM32中的优先级概念中的优先级概念 STM32STM32外部中断外部中断 STM32 STM32单片机单片机8080个通用个通用I/OI/O端口连端口连接到接到1919个外部中断个外部中断/ /事件源上。左图事件源上。左图为为STM32STM32单片机通用单片机通用I/OI/O与外部中断的与外部中断的映射关系:映射关系:PAxPAx、PBx PBx 、PCx PCx 、PDxPDx和和PExPEx端口对应的是同一个外部中断端口对应的是同一个外部中断/ /事事件源件源EXTIx(xEXTIx(
9、x:0-15)0-15)。EXTI_LineEXTI_Line值:值:P99P99NVIC_IRQChannelNVIC_IRQChannel值:值:P166P166void GPIO_Configuration(void)void GPIO_Configuration(void)/输入输出管脚配置输入输出管脚配置 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; / /配置输出脚配置输出脚PC0PC0控制控制LEDLED灯灯 GPIO_InitStructure.GPIO_Pin = GPIO_
10、Pin_0; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_Init(GPIOC
11、, &GPIO_InitStructure); / /配置输入脚配置输入脚PA0PA0控制按键控制按键 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_Init(GPIOA, &
12、GPIO_InitStructure); STM32STM32外部中断例程讲解外部中断例程讲解 void NVIC_Configuration(void)void NVIC_Configuration(void) / /嵌套向量中断控制器配置嵌套向量中断控制器配置 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig( NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1NVIC_PriorityGroup_1);
13、); / /选择优先级组别选择优先级组别 NVIC_InitStructure.NVIC_IRQChannel = NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQnEXTI0_IRQn; ; / /选择中断通道:选择中断通道:EXTIEXTI线线0 0中断,因为按键连接的是中断,因为按键连接的是PA0PA0脚脚 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /0 /0
14、级抢占式优先级级抢占式优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /0 /0级副优先级级副优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; / /使能引脚作为中断源使能引脚作为中断源 NVIC_Init(&NVIC_InitStructure); /NVIC_Init(&NVIC_I
15、nitStructure); /调用调用NVIC_InitNVIC_Init固件库函数进行设置固件库函数进行设置 STM32STM32外部中断例程讲解外部中断例程讲解 固件中固件中P166!P166!void EXTI_Configuration(void)void EXTI_Configuration(void) / /调用固件库中的调用固件库中的GPIO_EXTILineConfigGPIO_EXTILineConfig函数,函数, /其中两个参数分别是中断口和中断口对应的引脚号其中两个参数分别是中断口和中断口对应的引脚号 GPIO_EXTILineConfig(GPIO_PortSour
16、ceGPIOA, GPIO_PinSource0);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_InitStructure.EXTI_Line = EXTI_Line0EXTI_Line0; ; / /将中断映射到中断将中断映射到中断/ /事件源事件源Line0Line0 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Mode = EXTI_M
17、ode_Interrupt; / /中断模式中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_FallingEXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling / /设置为下降沿中断设置为下降沿中断 EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_LineCmd = ENABLE; / /中断使能,即开中断中断使能,即开中断 EXTI_Init(&EXTI_InitStructure);EXTI_Ini
18、t(&EXTI_InitStructure); / /调用调用EXTI_InitEXTI_Init固件库函数,将结构体写入固件库函数,将结构体写入EXTIEXTI相关寄存器中相关寄存器中 STM32STM32外部中断例程讲解外部中断例程讲解 固件中固件中P99!P99!void EXTI0_IRQHandler(void)void EXTI0_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line0) != RESET) if(EXTI_GetITStatus(EXTI_Line0) != RESET) / /将将LED1LED1的状态反转的状态反转 GP
19、IO_WriteBit(GPIOC, GPIO_Pin_0, (BitAction)(1- GPIO_WriteBit(GPIOC, GPIO_Pin_0, (BitAction)(1- GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_0); GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_0); / /清中断清中断 EXTI_ClearITPendingBit(EXTI_Line0);EXTI_ClearITPendingBit(EXTI_Line0); STM32STM32外部中断例程讲解外部中断例程讲解 注意:中断服务函数都包含
20、在注意:中断服务函数都包含在“stm32f10 x_it.c”stm32f10 x_it.c”文件中,文件中, 用的时候只需添加指令即可用的时候只需添加指令即可! ! STM32STM32外部中断下载测试外部中断下载测试 下载完程序后,按按键下载完程序后,按按键K1K1触发中断,触发中断,LEDLED灯灯B1B1状态反转。状态反转。实际操作:实际操作:修改程序,使中断通过按键修改程序,使中断通过按键K3K3触发,同时触发,同时4 4个个LEDLED灯状态反转?灯状态反转?STM32STM32定时器简介定时器简介 STM32 STM32中一共有中一共有1111个定时器,其中个定时器,其中2 2个
21、高级控制定时器,个高级控制定时器,4 4个个普通定时器和普通定时器和2 2个基本定时器,以及个基本定时器,以及2 2个看门狗定时器和个看门狗定时器和1 1个系统个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTickSysTick。主要讲普通定时器定时器。主要讲普通定时器定时器。定时器定时器计数器分计数器分辨率辨率计数器类计数器类型型预分频系预分频系数数产生产生DMADMA请求请求捕获捕获/ /比比较通道较通道互补输出互补输出TIM1TIM1TIM8TIM81616位位向上,向向上,向下,向上下,向上/ /向下向下1-655361-655
22、36之间的任之间的任意数意数可以可以4 4有有TIM2TIM2TIM3TIM3TIM4TIM4TIM5TIM51616位位向上,向向上,向下,向上下,向上/ /向下向下1-655361-65536之间的任之间的任意数意数可以可以4 4没有没有TIM6TIM6TIM7TIM71616位位向上向上1-655361-65536之间的任之间的任意数意数可以可以0 0没有没有TIM2-TIM5TIM2-TIM5是普通定时器,是普通定时器,TIM6TIM6和和TIM7TIM7是基本定时器,其时钟由是基本定时器,其时钟由APB1APB1输出产生。输出产生。 2.12.1 时钟来源时钟来源计数器时钟可以由下列
23、时钟源提供:计数器时钟可以由下列时钟源提供: 内部时钟内部时钟(CK_INT)(CK_INT) 外部时钟模式外部时钟模式1 1:外部输入脚:外部输入脚(TIx)(TIx) 外部时钟模式外部时钟模式2 2:外部触发输入:外部触发输入(ETR)(ETR) 内部触发输入内部触发输入(ITRx)(ITRx):使用一个定时器作为另一个定时器的预分:使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器频器,如可以配置一个定时器Timer1Timer1而作为另一个定时器而作为另一个定时器Timer2Timer2的预分频的预分频器。器。 由于今天的学习是最基本的定时功能,所以采用由于今天的学习是最基
24、本的定时功能,所以采用内部时钟内部时钟。TIM2-TIM2-TIM5TIM5的时钟不是直接来自于的时钟不是直接来自于APB1APB1,而是来自于,而是来自于输入为输入为APB1APB1的一个倍频器的一个倍频器。这个倍频器的作用是:当这个倍频器的作用是:当APB1APB1的预分频系数为的预分频系数为1 1时,这个倍频器不起作用,时,这个倍频器不起作用,定时器的时钟频率等于定时器的时钟频率等于APB1APB1的频率;当的频率;当APB1APB1的预分频系数为其他数值时的预分频系数为其他数值时(即预分频系数为(即预分频系数为2 2、4 4、8 8或或1616),这个倍频器起作用,定时器的时钟频率),
25、这个倍频器起作用,定时器的时钟频率等于等于APB1APB1的频率的的频率的2 2倍。通过倍频器给定时器时钟的好处是:倍。通过倍频器给定时器时钟的好处是:APB1APB1不但要给不但要给TIM2-TIM5TIM2-TIM5提供时钟,还要为其他的外设提供时钟;设置这个倍频器可以保提供时钟,还要为其他的外设提供时钟;设置这个倍频器可以保证在其他外设使用较低时钟频率时,证在其他外设使用较低时钟频率时,TIM2-TIM5TIM2-TIM5仍然可以得到较高的时钟频仍然可以得到较高的时钟频率。率。 STM32STM32定时器简介定时器简介 2.22.2 计数器模式计数器模式 TIM2-TIM5 TIM2-T
26、IM5可以由向上计数、向下计数、向上向下双向计数。可以由向上计数、向下计数、向上向下双向计数。向向上计数模式上计数模式中,计数器从中,计数器从0 0计数到自动加载值计数到自动加载值(TIMx_ARR(TIMx_ARR计数器内容计数器内容) ),然后重新从然后重新从0 0开始计数并且产生一个计数器溢出事件。在开始计数并且产生一个计数器溢出事件。在向下模式向下模式中,中,计数器从自动装入的值计数器从自动装入的值(TIMx_ARR)(TIMx_ARR)开始向下计数到开始向下计数到0 0,然后从自动装入,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。而中央对齐模式的值重新开始,并产生一个计
27、数器向下溢出事件。而中央对齐模式(向上向上/ /向下计数向下计数)是计数器从)是计数器从0 0开始计数到自动装入的值开始计数到自动装入的值-1-1,产生一,产生一个计数器溢出事件,然后向下计数到个计数器溢出事件,然后向下计数到1 1并且产生一个计数器溢出事件;并且产生一个计数器溢出事件;然后再从然后再从0 0开始重新计数。开始重新计数。STM32STM32定时器简介定时器简介 void GPIO_Config(void)void GPIO_Config(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitTypeDef GPIO_InitSt
28、ructure; / /定义固件函数库中已经定义好的数据结构的变量定义固件函数库中已经定义好的数据结构的变量 / /变量类型:变量类型:GPIO_InitTypeDefGPIO_InitTypeDef、变量名、变量名 :GPIO_InitStructureGPIO_InitStructure / /使能各端口时钟,和利用端口使能各端口时钟,和利用端口AFIOAFIO时钟时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_ RCC_APB2PeriphClockCmd(RCC_APB
29、2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_ GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE); GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.
30、GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; / /选择端口位选择端口位 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; / /选择端口时钟选择端口时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; / /选择端口输出方式选择端口输出方
31、式 GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_Init(GPIOC, &GPIO_InitStructure);/按以上设置初始化该端口按以上设置初始化该端口 GPIO_ResetBits(GPIOC,GPIO_Pin_0);GPIO_ResetBits(GPIOC,GPIO_Pin_0); /C /C端口的端口的0 0,1 1,2 2,3 3 管脚输出管脚输出0 0 GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPI
32、O_Pin_2); GPIO_ResetBits(GPIOC,GPIO_Pin_2); GPIO_ResetBits(GPIOC,GPIO_Pin_3); GPIO_ResetBits(GPIOC,GPIO_Pin_3); STM32STM32定时器例程讲解定时器例程讲解( (查询方式查询方式) ) void Timer_Config(void)void Timer_Config(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; / /定义定义T
33、IMTIM结构体变量结构体变量 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); / /使能使能TIM2TIM2外设外设 TIM_DeInit(TIM2);/TIM_DeInit(TIM2);/复位时钟复位时钟TIM2TIM2,恢复到初始状态,恢复到初始状态 TIM_TimeBaseStructure.TIM_Period=35999; TIM_TimeBaseStructure.TIM_Period=35999; TIM_TimeBase
34、Structure.TIM_Prescaler=1999; TIM_TimeBaseStructure.TIM_Prescaler=1999; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /TIM2 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /TIM2时钟分频时钟分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /TIM_TimeBaseStructure.TIM_CounterMode=TIM
35、_CounterMode_Up; /计数方式计数方式 / /定时时间定时时间T T计算公式:计算公式: T=(TIM_Period+1)T=(TIM_Period+1)* *(TIM_Prescaler+1)/TIMxCLK=(35999+1)(TIM_Prescaler+1)/TIMxCLK=(35999+1)* *(1999+1)/72MHz=1s(1999+1)/72MHz=1s TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); / TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); /初始化初始化 T
36、IM_ClearFlag(TIM2,TIM_FLAG_Update); / TIM_ClearFlag(TIM2,TIM_FLAG_Update); /清除标志清除标志 TIM_Cmd(TIM2,ENABLE); / TIM_Cmd(TIM2,ENABLE); /使能使能TIM2TIM2 STM32STM32定时器例程讲解定时器例程讲解( (查询方式查询方式) ) /程序主循环程序主循环 while(1)while(1) if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET) if(TIM_GetFlagStatus(TIM2,TIM_FLAG_U
37、pdate)!=RESET) / /查询查询TIM_FLAG_UpdateTIM_FLAG_Update标志置位了就清除标志标志置位了就清除标志 TIM_ClearFlag(TIM2,TIM_FLAG_Update);TIM_ClearFlag(TIM2,TIM_FLAG_Update);/清标志清标志switch(state)switch(state) case 0: GPIO_SetBits(GPIOC,GPIO_Pin_0); case 0: GPIO_SetBits(GPIOC,GPIO_Pin_0); GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_Re
38、setBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPIO_Pin_2); GPIO_ResetBits(GPIOC,GPIO_Pin_2); default: default: break; break; if(+state=5) state=0; if(+state=5) state=0; STM32STM32定时器例程讲解定时器例程讲解( (查询方式查询方式) ) STM32STM32定时器例程讲解定时器例程讲解( (中断方式中断方式) ) void NVIC_Config(void)void NVIC_Config(void) NVIC_I
39、nitTypeDef NVIC_InitStructure;/ NVIC_InitTypeDef NVIC_InitStructure;/定义结构体变量定义结构体变量 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / /设置优先分级组设置优先分级组 NVIC_InitStructure.NVIC_IRQChannel= NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQnTIM2_IRQn; ; / /选择中断通道
40、。注意:固件库中为选择中断通道。注意:固件库中为XXX_IRQChannelXXX_IRQChannel,但该程序预定义为,但该程序预定义为 XXX_IRQn XXX_IRQn,所以要特别注意,所以要特别注意 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; / /先占优先级先占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.N
41、VIC_IRQChannelSubPriority=0; / /从优先级从优先级 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; / /使能中断向量配置使能中断向量配置 NVIC_Init(&NVIC_InitStructure); NVIC_Init(&NVIC_InitStructure); / /按以上设置初始化中断向量按以上设置初始化中断向量 固件中固件中P166!P166!void Timer_Config(void)void Timer_Confi
42、g(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; / /定义定义TIMTIM结构体变量结构体变量 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); / /使能使能TIM2TIM2外设外设 TIM_DeInit(TIM2);/TIM_DeInit(TIM2);/复位时钟复位时钟TIM2TIM
43、2,恢复到初始状态,恢复到初始状态 TIM_TimeBaseStructure.TIM_Period=35999; TIM_TimeBaseStructure.TIM_Period=35999; TIM_TimeBaseStructure.TIM_Prescaler=1999; TIM_TimeBaseStructure.TIM_Prescaler=1999; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /TIM2 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /TIM2时钟分频时钟分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /计数方式计数方式 / /定时时间定时时间T T计算公式:计算公式: T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拨叉头加工课程设计
- 环保行业工程师工作总结
- IT行业客户服务心得
- 门诊部医生的工作总结
- 2024年苏教版九年级语文上册教学工作总结(共16篇)
- 2024年税务师题库(原创题)
- 《期货市场投资分析》课件
- 2024年规章制度会议记录(16篇)
- 【人教版九上历史】知识清单
- 2025关于房地产销售代理合同模板
- 广东省广州市越秀区2022-2023学年八年级上学期期末物理试卷
- 统编版语文四年级上册《期末作文专项复习》 课件
- 2024年黑龙江省机场集团招聘笔试参考题库含答案解析
- 食品从业人员安全学习培训记录
- 内科季度护理质量分析课件
- 2024年安全生产月活动安全知识竞赛题库含答案
- 销售回款专项激励政策方案(地产公司)
- 孕产妇健康管理服务规范课件
- 生物系统建模与仿真课件
- 风电项目核准及开工行政审批流程(备案核准、施工许可)
- ××市××学校巩固中等职业教育基础地位专项行动实施方案参考提纲
评论
0/150
提交评论