完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PM组件,被按键中断唤醒后,立即进入按键中断函数,在按键中断函数中有LOGD和rt_kprintf函数,这两个打印函数在按键中断函数中无法输出到shell。 的确是进入了DEEP,按键能唤醒,按键唤醒中断函数中的LED亮灭正常,就是rt_kprintf输出到shell没有输出,而rt_pm_notify_set设置的进入和退出deepsleep的打印函数都正常输出。 |
|
相关推荐
8个回答
|
|
什么型号的单片机? 单片机进入 DEEP SLEEP(停止模式)后若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。唤醒后,STM32 将使用 HSI RC 振荡器作为系统时钟。 因为唤醒后的系统时钟不是使用的 HSE 倍频后的时钟,对于 STM32F1xx 来说此时的系统时钟不是 72MHz,所以串口的波特率在唤醒后需要重新进行配置才能使串口正常输出,在 PM 组件中有函数 uart_console_reconfig() 实现了串口重新配置的功能。 |
|
|
|
|
|
|
|
唤醒之后应该第一步重新配置时钟,配置 HSE 作为系统的时钟源。你上面的代码虽然更新了串口的配置,但是此时的系统时钟在软件中获得的值是 HSE 的,但是唤醒后硬件上的系统时钟是 HSI,这两个值是不匹配的,而串口又与系统时钟有关所以不对。
|
|
|
|
之前写的逻辑代码里面的逻辑如下:
#ifdef STOP_MODE_TEST // stop 模式,使用外部中断唤醒 led0_on(); display_sysclock(); // 打印系统时钟,此时是 HSE 作为系统时钟 enter_stop_mode(); // 进入 stop 模式 SystemCoreClockUpdate();// 根据时钟寄存器的值更新 SystemCoreClock 变量 MX_USART1_UART_Init(); // 因为串口使用的是HSE,停止模式唤醒后使用的是HSI,所以需要重新初始化串口 printf("exit stop mode. line = %d\r\n", __LINE__); // 唤醒后打印 display_sysclock(); // 打印系统时钟,此时是 HSI 作为系统时钟 SystemClock_Config(); // 重新配置HSE MX_USART1_UART_Init(); // 配置HSE后重新配置串口 printf("\r\nsystem clock config\r\n"); // 配置时钟 display_sysclock(); // 打印配置HSE后的系统时钟 led0_off(); HAL_Delay(1000); #endif |
|
|
|
总算搞定了,多谢了,就是时钟的问题,我在按键中断里面添加了从新初始化总时钟的代码 void SystemClock_Config(void);果然就正常了,今后的应用中的确需要在唤醒中断中立即将时钟调整过来,不然可能所有外设都可能不正常 |
|
|
|
是的,因为外设大多挂载在 APB 总线上,而 APB 总线上的时钟也是由系统时钟分频得到的。
|
|
|
|
还有个问题想请教一下,按理来说stm32L4执行pm_release_all后,main函数中的循环rt_thread_mdelay(5000)会把main线程挂到定时器列表中,而根据PM组件的做法是会获取下次该执行的定时时间并且赋值给LPTIME,系统进入休眠状态(如果使能时间补偿,休眠之前会先启动低功耗定时器),LPTIME到期后会唤醒MAIN线程执行几下,但实际情况只有RTC和按键中断才可以把其唤醒。 还有这两个选项的作用是什么呢? |
|
|
|
退出唤醒,应该先初始化好时钟,如果直接去执行中断,确认下 全局屏蔽中断的操作是否失效引起的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
786 浏览 0 评论
4210 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2520 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2926 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31442 浏览 11 评论
72901 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:47 , Processed in 0.717617 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号