|
虚无HAL_RTC_MspInit(RTC_HandleTypeDef HRTC) { RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; if(hrtc->实例==RTC) { / 用户代码开始 RTC_MspInit 0 */ / 用户代码结束 RTC_MspInit 0 初始化外设时钟 / PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;/ /* if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); } / 外围时钟启用/ __HAL_RCC_RTC_ENABLE(); __HAL_RCC_RTCAPB_CLK_ENABLE(); /RTC 中断 Init / HAL_NVIC_SetPriority(RTC_TAMP_IRQn,1,0); HAL_NVIC_EnableIRQ(RTC_TAMP_IRQn); 以上初始化的msp函数中最后4句每走一步都会使唤醒中断标志位置,最后一句执行完后干脆进入中断,我是利用RTC的唤醒模式做stop模式的唤醒用以实现低功耗,以下为基本代码: MX_RTC_Init(); __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF); HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);//进入停止模式 SystemClock_Config(); HAL_Delay(100); MX_USART1_UART_Init(); HAL_UARTEx_ReceiveToIdle_DMA(&huart1, USART1_DMA_RX_BUF, 1000); 初始化RTC后,进入停止模式,然后等待唤醒恢复时钟后,运行串口的空闲中断,发现一系列运行下来后直接进入串口的接收,没有进入stop模式,用断点发现rtc初始化后会进一次中断,但是手册上写的明明是rtc的唤醒计数器清0后才会进入中断,附件中cubeMX设置图片 |
STM32G030死机问题
A Guide to Mastering Slope
STM32G0B1
无源晶振开关电路设计
STM32G031F8P6开启读保护后,数据全变成0?
stm32g030f6p6的LL库,ADC多通道,DMA错位问题请教
STM32G030x6/x8被淋雨进水了但未通电,风险如何?怎么处理?
20GQCDR 请问这个是用在哪里的,各位大神帮忙看看,什么类型的,丝印是1242688
关于手动移植RTOS的问题,在基于HAL生成的工程上。xPortSysTickHandler()会影响外部晶振的时钟初始化,进入硬件故障处理函数,HSI没问题
使用单片机的USB PD功能时,初始化一直出错。
微信公众号
手机版
建议最好将Cubemx项目文件上传,这样小伙伴们才能针对性的调试,协助找出问题。
配置不同,或代码的不同,都会引起不同的结果。
你是说仅仅就这段来说你能跑的通,没遇到我遇到的状况吗?
不过调试时注意,如果第一次唤醒中断打断点,但是没走完(也就是没有清除标志位),那么复位后(不掉电)再调试,这时遇到的情况和你的类似。开启中断就进入。
不知道你的条件和代码是否一样。你列出来的关于RTC MSP int 中的代码是基本通用的,其他设置暂不保证一致。
我也在试,同时给RTC的中断处理函数和进入stop模式打断点,总是先进RTC的中断处理函数,即使进stop模式前中断标志没有置位,也会发现rtc的句柄里的instance里面的中断标志位也置位了,总之在进stop前总有一个rtc的唤醒中断,我还试了下官方的ll库,也不行
我现在倒是能进入stop模式了,就是后边跟的串口接收有问题,本来正常情况下热启动的gps模块启动后3到4秒后就可以收到有效信息,但是现在要隔30秒左右才能收到有效信息,以为是时钟问题,最后把系统时钟直接改成了HSI(STOP模式被唤醒后系统的默认时钟,这样就不用重新配置时钟了),结果也一样,应该不是唤醒后时钟的问题,郁闷了,搞不懂
这里涉及到时钟和速率等相关配置,在RM0444上有一些描述。
不同条件下有不同的设置,可以核对下一,看看哪里需要调整。