完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想通过一个引脚,触发tiM2开始计时,时间到进行其他操作,不循环,触发一次计时一次。
当执行时,触发TIM2开始计时,瞬间就触发中断事件,根本没到我设置的计时时间。 请问,如何解决这问题? /************************************************************************************************** * 函 数:Init_Timer2 * 功 能:初始化Timer2 * 参 数:无 * 返 回:无 * 说 明:用于按键输入检查 * 更新日期:2017-9-2 **************************************************************************************************/ void Init_Timer2(void) { //256分频,自动重装值 40000,2M主时钟/(256*( 39999+1),相当于周期为5.2S, TIM2_DeInit(); TIM2_TimeBaseInit(TIM2_PRESCALER_256, 39999); TIM2_PrescalerConfig(TIM2_PRESCALER_256, TIM2_PSCRELOADMODE_UPDATE); TIM2_SetCounter(0x00); //设定计数器的初值0 TIM2_ARRPreloadConfig(ENABLE); //允许自动重装 TIM2_SelectOnePulseMode(TIM2_OPMODE_SINGLE);//在发生下一次更新事件(清除CEN位)时,计数器停止 TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); //更新中断使能 } int main( void ) { Init_Timer2(); IO_Init(); enableInterrupts(); //总中断使能 u8 Flag = 1; while(1) { if (GPIO_ReadInputPin(Input_GPIO, HS_Pin) Flag) { Flag = 0; GPIO_WriteLow(Output_GPIO, Work_Pin); //点亮LED TIM2_Cmd(ENABLE); } } } 中断 INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ if (TIM2_GetITStatus(TIM2_IT_UPDATE) != RESET) //检查 TIM2 更新中断发生与否 { TIM2_ClearITPendingBit(TIM2_IT_UPDATE); //清除中断标记 GPIO_WriteHigh(Output_GPIO, Work_Pin); //关LED } |
|
相关推荐
2个回答
|
|
|
|
|
|
根据您的描述,您希望使用STM8的TIM2定时器实现一个非循环的计时功能,通过一个引脚触发开始计时,计时结束后执行其他操作。但是您遇到了一个问题:在触发计时后,中断事件立即被触发,没有达到您设置的计时时间。
为了解决这个问题,请按照以下步骤操作: 1. 确保您的定时器配置正确。首先,您需要配置TIM2的时钟源、预分频器和自动重载寄存器。这些设置将决定定时器的计时精度和最大计时时间。 2. 确保您的中断使能位已正确设置。在STM8中,您需要设置TIM2的IER寄存器,使能所需的中断。例如,如果您希望在定时器溢出时触发中断,您需要设置IER寄存器的TIE(定时器溢出中断使能位)。 3. 确保您的中断服务函数(ISR)正确实现。在STM8中,您需要在定时器中断服务函数中实现所需的操作。例如,您可以在TIM2的中断服务函数中检查是否发生了溢出中断,如果是,则执行相应的操作。 4. 确保您的触发引脚正确连接和配置。您需要确保触发引脚已正确连接到STM8,并配置为输入模式。此外,您还需要在STM8的外部中断配置中设置触发引脚的触发条件(例如,上升沿触发)。 5. 检查您的计时器初始化函数。确保您在Init_Timer2函数中正确设置了定时器的配置参数,例如时钟源、预分频器和自动重载寄存器。 6. 如果问题仍然存在,请检查您的硬件连接和电源供应。确保STM8的时钟信号和电源供应稳定,以避免因硬件问题导致的计时不准确。 通过以上步骤,您应该能够解决触发计时后立即触发中断的问题。如果问题仍然存在,请仔细检查您的代码和硬件连接,确保所有设置都正确无误。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1228 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1241 浏览 1 评论
647 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
486 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1173 浏览 2 评论
1693浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
359浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
346浏览 3评论
337浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
316浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-5 16:18 , Processed in 0.792902 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191