完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我对电子产品很陌生,并且对定时器设置有一个基本的问题。我正在使用STM8L151K6并尝试将tiM2配置为使用标准外设库每30秒生成一次中断。我不需要任何类型的波形生成,只需要30秒的超时来禁用连接的IC。 MCU在此期间暂停,因此我需要中断唤醒。如果可能,如何为此间隔配置TIM2?
以上来自于谷歌翻译 以下为原文 I'm very new to electronics and have a basic question regarding timer setup. I'm using an STM8L151K6 and am trying to configure TIM2 to simply generate an interrupt every 30 seconds using the standard peripheral library. I don't require any type of waveform generation, just a 30 second timeout to disable an attached IC. The MCU is halted during this time, so I do require an interrupt to wake. If possible, how do I configure TIM2 for this interval? |
|
相关推荐
3个回答
|
|
斯科特,
当STM8L151暂停时,其定时器也会暂停,因此使用TIMx不可能每30秒产生一次中断。 这并不意味着STM8L151无法满足您的需求。 您应该使用RTC,启用其独立RC振荡器或32768 Hz外部谐振器,并配置RTC警报。 问候 EtaPhi 以上来自于谷歌翻译 以下为原文 Scott, when a STM8L151 is halted, its timers are halted too, so it's impossible to generate an interrupt every 30 seconds with TIMx. This doesn't mean that a STM8L151 can't provide what you need. You should use the RTC, enable its indipendent RC oscillator or an 32768 Hz external resonator, and configure a RTC alarm. Regards EtaPhi |
|
|
|
谢谢你的回复。我实际上错误地说明了睡眠模式。 MCU处于等待中断状态而不是暂停状态。我已经能够每1ms生成一次中断,但假设通过将计数器设置为30000,它将等待30秒。例如:
static void InitDelay2() { //启用TIM4时钟 CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE); //时基配置(~1ms) TIM2_TimeBaseInit(TIM2_Prescaler_128,TIM2_CounterMode_Down,U8(125)); TIM2_SetCounter(30000); //不要重复 TIM2_SelectOnePulseMode(TIM2_OPMode_Single); //启用更新中断 TIM2_ITConfig(TIM2_IT_Update,ENABLE); //启动计时器 TIM2_Cmd(ENABLE); } 我也将研究设置RTC。 以上来自于谷歌翻译 以下为原文 Thanks for response. I actually misstated the sleep mode. The MCU is in wait-for-interrupt as opposed to halt. I've been able to generate an interrupt every 1ms, but was assuming that by setting the counter to 30000, it would wait for 30s. For example: static void InitDelay2() { // Enable TIM4 clock CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); // Time base configuration (~1ms) TIM2_TimeBaseInit(TIM2_Prescaler_128, TIM2_CounterMode_Down, U8(125)); TIM2_SetCounter(30000); // No repeat TIM2_SelectOnePulseMode(TIM2_OPMode_Single); // Enable update interrupt TIM2_ITConfig(TIM2_IT_Update, ENABLE); // Start timer TIM2_Cmd(ENABLE); } I'll look into setting the RTC, as well. |
|
|
|
RTC工作正常。我配置了LSI时钟源。它似乎更接近36KHz而不是38KHz。我不需要准确的时间,所以这很好。再次感谢您的帮助。
以上来自于谷歌翻译 以下为原文 RTC is working fine. I've configured LSI clock source. It seems closer to 36KHz rather than 38KHz. I don't need exact timing, so this is working fine. Thanks again for the help. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2644 浏览 1 评论
3209 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1784 浏览 1 评论
3613 浏览 6 评论
5990 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 15:04 , Processed in 1.300957 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号