-
APM32F030K6 的RTC是否拥有16bit重装载唤醒计数器
之前调试停止模式RTC唤醒时,并未触发RTC WUT** 的中断唤醒。所以想确认一下APM32F030K6是否有隐藏的RTC外设福利。 [font=Arial][size=10.56pt] [/size][/font]
1278浏览量 2回复量 关注量 -
[STM32L1低功耗] MCU进入Stop模式后PWR_WAKEUP_PIN1唤醒失效 赏300家园币
[i=s] 本帖最后由 monoliths@uni 于 2024-6-5 11:09 编辑 [/i] STM32L151进入Stop模式后RTC正常唤醒 [b]PWR_WAKEUP_PIN1配置唤醒失效[/b] 初学STM32 请高人指点 [attach]2260546[/attach] [attach]2260540[/attach] [attach]2260538[/attach] [attach]2260536[/attach] [attach]2260534[/attach] [attach]2260532[/attach] 若配置PA0为中断触发,则可以正常唤醒 | 配置如图: [attach]2260570[/attach]
5950浏览量 3回复量 关注量 -
CW32l083 RTC 偏差值 sos
rtc运行一晚上时间比实际实际快了十多分钟 ,程序运行逻辑,程序运行后5分钟进入休眠模式,10分钟后rtc唤醒并打印当前时间 请教出现这种情况的原因是什么 rtc 配置 void my_rtc_Init(void) { RTC_InitTypeDef RTC_InitStruct = {0}; RTC_InitStruct.DateStruct.Day = 0x20; //设置日期,DAY、MONTH、YEAR必须为BCD方式,星期为0~6,代表星期日,星期一至星期六 RTC_InitStruct.DateStruct.Month = RTC_Month_March; RTC_InitStruct.DateStruct.Week = RTC_Weekday_Wednesday; RTC_InitStruct.DateStruct.Year = 0x24; RTC_InitStruct.TimeStruct.Hour = 0x09; //设置时间,HOUR、MINIUTE、SECOND必须为BCD方式,用户须保证HOUR、AMPM、H24之间的关联正确性 RTC_InitStruct.TimeStruct.Minute = 0x09; RTC_InitStruct.TimeStruct.Second = 0x00; RTC_InitStruct.TimeStruct.AMPM = 0; RTC_InitStruct.TimeStruct.H24 = 1; RTC_InitStruct.RTC_ClockSource = RTC_RTCCLK_FROM_LSI; RTC_Init(&RTC_InitStruct); // 用户需选定需要使用的时钟源 } /* 设置时钟 */ unsigned char at_cmd_setrtc(Timestamp tm){ RTC_DateTypeDef RTC_DateStruct = {0}; RTC_TimeTypeDef RTC_TimeStruct = {0}; RTC_DateStruct.Year = HexToBcd((unsigned char) tm.year); RTC_DateStruct.Month = HexToBcd((unsigned char) tm.month); RTC_DateStruct.Day = HexToBcd((unsigned char) tm.day); RTC_DateStruct.Week = HexToBcd((unsigned char) tm.week); RTC_TimeStruct.Hour = HexToBcd((unsigned char) tm.hour); RTC_TimeStruct.Minute = HexToBcd((unsigned char) tm.minute); RTC_TimeStruct.Second = HexToBcd((unsigned char) tm.second); RTC_TimeStruct.AMPM = 0; RTC_TimeStruct.H24 = 1; RTC_SetTime(&RTC_TimeStruct); RTC_SetDate(&RTC_DateStruct); return 0; } uint8_t *WeekdayStr[7]= {"SUN","MON","TUE","WED","THU","FRI","SAT"}; void showrtctime(void) { char out[20]; RTC_TimeTypeDef RTC_TimeStruct = {0}; RTC_DateTypeDef RTC_DateStruct = {0}; RTC_GetDate(&RTC_DateStruct); RTC_GetTime(&RTC_TimeStruct); sprintf(out,"20%02d-%02d-%02d %s",BcdToHex(RTC_DateStruct.Year),BcdToHex(RTC_DateStruct.Month),BcdToHex(RTC_DateStruct.Day),WeekdayStr[RTC_DateStruct.Week]); printf("current time: %s ",out); sprintf(out,"%02d:%02d:%02d",BcdToHex(RTC_TimeStruct.Hour),BcdToHex(RTC_TimeStruct.Minute),BcdToHex(RTC_TimeStruct.Second)); printf(" %s \r\n",out); } void set_rtcAwk(uint16_t interval) { RTC_AWTTypeDef RTC_AWTStruct = {0}; RTC_AWTCmd(DISABLE); NVIC_DisableIRQ(RTC_IRQn); interval = (uint16_t)(interval*0.125) - 1; printf("set_rtcAwk %d \r\n", interval); showrtctime(); RTC_AWTStruct.AWT_ARRValue = interval; //(interval+1)/0.125 RTC_AWTStruct.AWT_ClockSource = RTC_AWTSOURCE_FROM_RTC1HZ_8; //0.125hz RTC_AWTConfig(&RTC_AWTStruct); RTC_ClearITPendingBit(RTC_IT_AWTIMER); RTC_AWTCmd(ENABLE); RTC_ITConfig(RTC_IT_AWTIMER, ENABLE); NVIC_EnableIRQ(RTC_IRQn); } void RTC_IRQHandlerCallBack(void) { if (RTC_GetITState(RTC_IT_AWTIMER )) { showrtctime(); RTC_ClearITPendingBit(RTC_IT_AWTIMER); } } /****************************************************************************** * Local function prototypes ('static') ******************************************************************************/ void System_Clk_Config(void) { uint8_t res; RCC_HSI_Enable( RCC_HSIOSC_DIV2 ); //配置系统时钟为HSI 24M RCC_LSI_Enable(); RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_FLASH, ENABLE); //打开FLASH时钟 FLASH_SetLatency(FLASH_Latency_1); //频率小等于24M需要配置FlashWait=1 REGBITS_SET(CW_FLASH->CR1, FLASH_CR1_STANDBY_Msk); //打开FLASH低功耗使能控制 res = RCC_SysClk_Switch( RCC_SYSCLKSRC_HSI ); //切换系统时钟到HSI if( res == 0x0U ) //切换系统时钟成功 { RCC_SystemCoreClockUpdate(24000000); RCC_HCLKPRS_Config(RCC_HCLK_DIV1); //HCLK(不分频)=PCLK RCC_PCLKPRS_Config(RCC_PCLK_DIV1); } else { while(1) { } } } void RCC_CLK_Config(void) { //外设时钟使能 __RCC_GPIOA_CLK_ENABLE(); __RCC_GPIOB_CLK_ENABLE(); __RCC_GPIOC_CLK_ENABLE(); __RCC_GPIOF_CLK_ENABLE(); __RCC_UART1_CLK_ENABLE(); __RCC_UART2_CLK_ENABLE(); __RCC_UART3_CLK_ENABLE(); __RCC_UART4_CLK_ENABLE(); __RCC_UART5_CLK_ENABLE(); __RCC_UART6_CLK_ENABLE(); //__RCC_SPI1_CLK_ENABLE(); __RCC_RTC_CLK_ENABLE(); __RCC_BTIM_CLK_ENABLE(); __RCC_DMA_CLK_ENABLE(); } /****************************************************************************** * Local variable definitions ('static') * ******************************************************************************/ /****************************************************************************** * Local pre-processor symbols/macros ('#define') ******************************************************************************/ /***************************************************************************** * Function implementation - global ('extern') and local ('static') ******************************************************************************/ /** ****************************************************************************** ** \brief Main function of project ** ** \return uint32_t return value, if needed ** ** This sample HSI switch to PLL, PLL switch to HSI. ** ******************************************************************************/ int32_t main(void) { System_Clk_Config(); RCC_CLK_Config(); //InitTick(24000000); my_rtc_Init(); set_rtcAwk(600); Sleep_Mode_Config(DEEP_SLEEP_MODE); //DEEP_SLEEP_MODE printf("test...\r\n"); while (1) { /* code */ if(1==devParam_t.enter_sleep) { showrtctime(); printf("enter_low_power_consumption_mode...\r\n"); Enter_Deep_Sleep_Mode(); devParam_t.enter_sleep=0; printf("exit_low_power_consumption_mode...\r\n"); showrtctime(); } } }
1632浏览量 0回复量 关注量 -
N32G455的RTC断电复位问题
硬件上,CR2032直接对VBAT供电。软件初始化没有主动改写日历。 多次通断电会导致日历被清零,时间正常往前走。 请问这是什么原因导致的。谢谢
708浏览量 1回复量 关注量 -
GD32F303 RTC闹钟
为什么我的GD32F303 RTC闹钟的无法设置,RTC其他功能正常;1、设置方法按照手册,使用 库函数设置,但是设置完成之后RTC_ALRMH和RTC_ALRML两个寄存器的值还是0 void rtc_alarm_config(uint32_t alarm) { rtc_configuration_mode_enter(); /* set the alarm high bits */ RTC_ALRMH = alarm >> 16; /* set the alarm low bits */ RTC_ALRML = (alarm & RTC_LOW_VALUE); rtc_configuration_mode_exit(); } 2、手册上说RTC_ALRMH和RTC_ALRML两个寄存器复位值是0xFFFF,但实际是0
4113浏览量 3回复量 关注量 -
GD32F105进入深度睡眠后,RTC中断不能正常运行。 sos
[i=s] 本帖最后由 地瓜土豆 于 2021-6-1 15:28 编辑 [/i] GD32F105进入深度睡眠后,RTC中断不能正常运行。常规模式下是可以产生中断的。我想深度睡眠之后定时唤醒,但是深度睡眠之后,RTC中断不能相应。一直都在深度睡眠模式,退不出来。求大佬解惑。谢谢!以下是我的代码。void rtc_conf(void) { nvic_irq_enable(RTC_IRQn,1,4); //中断优先级 rcu_periph_clock_enable(RCU_BKPI); //开启时钟 后备寄存器 rcu_periph_clock_enable(RCU_PMU); pmu_backup_write_enable(); //允许访问 后备寄存器 bkp_deinit(); //反初始化 //rcu_osci_on(RCU_LXTAL); //rcu_osci_stab_wait(RCU_LXTAL); //rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); rcu_osci_on(RCU_IRC40K); //使能低速慢时钟 rcu_osci_stab_wait(RCU_IRC40K);//等待低速慢时钟稳定 rcu_rtc_clock_config(RCU_RTCSRC_IRC40K); //选择低速慢时钟源 rcu_periph_clock_enable(RCU_RTC); //使能RTC rtc_register_sync_wait(); //等待RTC寄存器同步 rtc_lwoff_wait(); //等待RTC寄存器上的最后一次写入操作完成 rtc_interrupt_enable(RTC_INT_SECOND); //使能 秒中断 rtc_lwoff_wait(); //等待RTC寄存器上的最后一次写入操作完成 rtc_prescaler_set(32767); rtc_lwoff_wait(); } void RTC_IRQHandler(void) { if(rtc_flag_get(RTC_FLAG_SECOND) != RESET) { Rtc_Time.s++; SleepS_Rtc++; rtc_flag_clear(RTC_FLAG_SECOND); } } void Sleep_Wdog(long sleep_s) { float car_v=0; SleepS_Rtc=0; Rtc_Time.s=0; while(SleepS_Rtc
2122浏览量 0回复量 关注量 -
rtc_register_sync_wait 超时 RTC寄存器同步超时 sos
原来用的stm32F103rct6转到GD32,发现RTC初始化死锁,后来发现死在寄存器同步上了,请帮忙看看是什么原因RTC用的LXTAL,32768Hz的晶振
2251浏览量 0回复量 关注量 -
GD32f103RCT6替换STM32f103RCT6,RTC跑的飞快,
之前用STM32f103RCT6是没有任何问题的,更换了主芯片,其它硬件,程序都没动,然后RTC跑的飞快,我把[table] [tr][td=484]HSE_STARTUP_TIMEOUT和FLASH的部分更改了,但没有任何变化。我测了外部32.768的晶振,的确是输出32k左右,但RTC依旧飞快的跑[/td][/tr] [/table]
9235浏览量 16回复量 关注量 -
GD32F103C8T6进入休眠后RTC无法唤醒?
我们的产品之前使用STM32F103C8T6,现在换成了GD32F103C8T6,下同样的程序,其它功能都是正常的,但是发现GD32的芯片进行休眠状态后,RTC不能正常唤醒,而STM32的完全正常的。请问这是啥问题。
4275浏览量 15回复量 关注量 -
RT-Thread中AT32F403A使用RTC
RT-Thread Studio中开启RTC,根据官方说明(基于STM32),只要三步:搜索 [align=left]复制[/align] /** if you want to use rtc(hardware) you can use the following instructions. * * STEP 1, open rtc driver framework(hardware) support in the RT-Thread Settings file * * STEP 2, define macro related to the rtc * such as BSP_USING_ONCHIP_RTC * * STEP 3, modify your stm32xxxx_hal_config.h file to support rtc peripherals. define macro related to the peripherals * such as #define HAL_RTC_MODULE_ENABLED 但是第三步,需要在hal_config.h文件中修改,而AT32用的是STD库,没有这个文件,需要在哪里进行修改?
1857浏览量 3回复量 关注量 -
CH579 BLE的sleep时间单位是什么
WAKE_UP_RTC_MAX_TIME - 睡眠唤醒所需时间,根据不同睡眠类型取值可分为:睡眠模式/下电模式 - 65(默认) 这个单位是什么?ms?还是计数值?
1089浏览量 5回复量 关注量