做了一块灯板,分很多组,每组灯亮暗都是独立的;想用TIM2每个通道控制一组灯的亮暗(不知能否行得通),4个通道控制4组灯,采用中断方式,就是通道1中断一次,A组灯亮,再中断,A组灯来,(亮暗间隔时间可以不同),几个问题请教各位大侠: 1、TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET 这句是来判断通道中断的吧?每次通道中断 时,TIM2也发生中断 TIM2_IRQHandler事件吧? 通道中断与TIM2中断这两个是什么关系? 2、通道中断用不用加上 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE); 3、”捕获“是不是就是把TIM2计数寄存器的数填到捕获寄存器中? 亮暗闪几下后就不闪了,不知为什么。 CCR1_Val来调节亮暗时间。 TIM的设置程序、中断程序,,如下: /* TIM2设置时基单元 */ // CCR:捕获/比较寄存器 TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Prescaler = 35999; // 0.5ms TIM_TimeBaseStructure.TIM_Period =TIM2_ARR; //它对应TIM2_ARR(自动装载寄存器 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ClockDivision是对CKD位进行设置的, TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* Prescaler configuration */ // TIM_PrescalerConfig(TIM2 , PrescalerValue, TIM_PSCReloadMode_Immediate); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; //选择定时器模式,TIM 输出比较时间模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /* TIM2第一通道设置 */ // TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //配置通道1 TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //装入当前捕获/比较2 TIM2_CCR1寄存器的值(预装载值)。 //通用寄存器的四个通道,每一个通道相当于一个中断触发源,可以设置一个计数值,当TIM计数值和此计数值相等时,触发中断。 //通道1 占空比=TIM2_CCR1/(TIM2_ARR+1)X100% TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //对CCER中CCxP的操作 TIM_OC1Init(TIM2, &TIM_OCInitStructure); //将配置应用 TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable); /*第二通道设置 */ TIM_OCInitStructure.TIM_Pulse = CCR2_Val; //这个是将CCR2_Val的值送到TMI2_CCR2中 TIM_OC2Init(TIM2, &TIM_OCInitStructure); //将配置应用 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//开启中断,TIM 中断源 TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);; //开启中断 捕获/比较1、2、3、4 中断源 /* TIM2 enable counter */ TIM_Cmd(TIM2, ENABLE); //最后两个步骤,一个是管理时钟的,一个是管理中断的。 中断程序: void TIM2_IRQHandler(void) { TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update); //清除掉中断标志位 <span style="font-size: small;"> if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) // TIM_IT_CC1: TIM 捕获/比较1 中断源 { TIM_ClearITPendingBit(TIM2, TIM_IT_CC1); capture = TIM_GetCapture1(TIM2); //获得输入捕获1 的值,即计数器中的计数值 if (capture |
æ§å¶å¤ç»ç¯äº®æçç¨åº.rar
下载1.44 MB, 下载次数: 84, 下载积分: ST金币 -1
【探索发现STM32 F3系列】之变频调速应用
STM32的USB host CDC应用
STM32F1的IAP程序,APP1和APP2两个应用程序交替更新的问题
现金悬赏-STM32F4Cube生成的USB HID应用无法接收数据
STM32F030F4P6待机模式唤醒应用问题
AN2580_STM32F10xxx TIM1 应用实例
求教各位大神,STM32G4系列的中文应用手册,谢谢。
关于STM32Cube工程文档的makefsdata应用
STM32G4高性能外设介绍及数字电源应用实战 培训资料有没啊
GPS应用例程
RE:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】
RE:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】
2. 那两个语句是定时器的总体配置 是需要的。
3. 捕获的意思 其实就是一个边沿触发中断事件,并是你说的意思。
回复:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】