完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32L4执行pm_release_all后,main函数中的循环rt_thread_mdelay(5000)会把main线程挂到定时器列表中,而根据PM组件的做法是会获取下次该执行的定时时间并且赋值给LPTIME, 按照这样的话系统进入休眠状态,休眠之前会先启动低功耗定时器,LPTIME到期后会唤醒MAIN线程执行几下,但实际情况只有RTC和按键中断才可以把其唤醒。主函数main中并没有循环唤醒循环再唤醒一直执行下去,而是一旦进入休眠,就一直休眠了,只有RTC和按键中断才能将其唤醒,而主函数中的rt_thread_mdelay到时间中LPTIMER并没有将其唤醒,这是怎么回事呢?
还有这两个选项的作用是什么呢? |
|
相关推荐
5个回答
|
|
lptimer 没有正常工作起来? 使用Studio,先确认下lptimer 的时钟是否正常开启
|
|
|
|
|
|
|
|
问题找到了,就是cubemx中LPTIME中时钟值开启成了PCLK2,PCLK2在DEEPSLEEp时是关闭的,所以LPTIME没法工作, 当把LPTIME的时钟改成LSI,后又出现一个问题 main线程中这个rt_thread_mdelay(3000),还是没有3000ms自动醒过来执行一下, 反倒是每隔六十几秒系统自动醒一下,感觉是LPTIME最大时钟超时唤醒的。 目前是证实了LPTIM是工作起来,但是主线程中延时3秒后LPTIME并没有将其唤醒执行一次。 |
|
|
|
先确认PM框架是否是最新的,最新的版本,默认只有lptimer的可以唤醒,这个也可以修改下,让系统delay定时器唤醒,不过看你代码的截图,像是老的框架。。
|
|
|
|
我这个应该是最新的PM框架吧,studio中直接使用的。 也就是相当于PM框架默认情况只能是LPTIMER定时器下挂起的线程才会被自动唤醒,其他普通定时器或者系统定时器挂起的线程都不能通过转让到LPTIME来唤醒?但是我看官方介绍,在IDEL线程中执行的低功耗切换函数,会把下一个所有延时的定时器都转接到LPTIM中来呢。 这点能否明确一下,很容易混淆 如果只能是LPTIM定时器能唤醒,那么内核中提供的定时器也就无法自动唤醒执行,不大合理感觉 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1209 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1058 浏览 0 评论
1444 浏览 0 评论
1371 浏览 0 评论
1023 浏览 0 评论
74582 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:39 , Processed in 0.688150 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号