完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有哪位 可以发一份 RTC唤醒的 STOP模式的 代码给我吗?我调试的代码始终有问题,唤醒后 串口打印是始终有问题;/*************************************************************/
void RTC_Config(void) { /* Enable the PWR clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /* Allow access to RTC */ PWR_BackupAccessCmd(ENABLE); RCC_LSICmd( ENABLE); //Æô¶¯LSI while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) { } /* Wait till LSi is ready */ /* Select the RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//Ñ¡ÔñLSI×÷ΪRTCʱÖÓÔ´ /* Enable the RTC Clock */ RCC_RTCCLKCmd(ENABLE);//Æô¶¯RTC RTC_WakeUpCmd(DISABLE); //¹Ø±ÕRTC »½ÐѶ¨Ê±Æ÷!!! /* µÈ´ýRTC¼Ä´æÆ÷ͬ²½ µÈ´ýдRTC¼Ä´æÆ÷Íê³É */ RTC_WaitForSynchro(); RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);//»½ÐѶ¨Ê±Æ÷ʱÖÓ RTC_SetWakeUpCounter( 0x9c4); //¸øRTC WAKE UP TIMER¸³ÖØ×°Öµ RTC_WakeUpCmd( ENABLE); //Æô¶¯RTC »½ÐѶ¨Ê±Æ÷ } /********RTC wake up interrupt NVIC ********/ void WKUP_NVIC_Config(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Configure EXTI line 20 (connected to the RTC wakeup event) */ EXTI_ClearITPendingBit(EXTI_Line20); EXTI_InitStructure.EXTI_Line = EXTI_Line20; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* NVIC configuration */ NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable peirodic wakeup interrupt */ RTC_ITConfig(RTC_IT_WUT, ENABLE); // /* Clear the wakeup Pending Bit */ RTC_ClearITPendingBit(RTC_IT_WUT); } /****** RTC periodic wake up interrupt service routine*******/ void RTC_IRQHandler(void) { //printf("R "); if (RTC_GetITStatus(RTC_IT_WUT) != RESET) { /* Clear RTC wake up interrupt pending bit */ RTC_ClearITPendingBit(RTC_IT_WUT); /* Clear EXTI line20 pending bit */ EXTI_ClearITPendingBit(EXTI_Line20); } if (PWR_GetFlagStatus(PWR_FLAG_WU) != RESET) { PWR_ClearFlag(PWR_FLAG_WU); } } /** * @brief Main program * @param None * @retval None */ int main(void) { u32 cnt=0; u32 i=0; USART_Config(); for(i=0;i<10;i++) { printf("rn OS Æô¶¯ ¿ªÊ¼ rn"); delay_ms(500); } printf("rn ¿ªÊ¼ÅäÖà rn"); RTC_Config(); /* RTC Configuration */ WKUP_NVIC_Config(); /* EXTI LINE 20 CONFIG */ printf("rn RTC STOP ģʽ ÅäÖÃÍê³É rn"); while(1) { PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); SystemInit(); printf("d "); } for(;;); } |
|
相关推荐
7个回答
|
|
唤醒后,点亮个LED,再进入sleep。
|
|
|
|
我用072也有这问题。你要清一下标志位__HAL_UART_RESET_HANDLE_STATE(&huart1);
|
|
|
|
|
|
RTC唤醒后,要重新配置系统时钟的,要不然时钟频率错了,波特率也就错了
|
|
|
|
你好,感谢回复! 唤醒后我是重新配置了时钟的,但是串口我觉得不应该再次配置了,对应的寄存器都是内容保存的; 最后的我也没有找见问题具体出在哪里! 解决方案是:采用 CUBE软件自动生成的代码,然后按照一样的方法 添加 低功耗代码,然后就可以了,估计是 FREERTOS哪里有移植问题导致的吧 |
|
|
|
一般串口的引脚要重新初始化,就是输入输出方式,串口的其他部分不能再次初始化,否则是可能不能收发的
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 11:00 , Processed in 0.609551 second(s), Total 52, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号