STM32,RTC周期性唤醒(wakeup)中断
来源:互联网 发布:软件竣工总结报告 编辑:程序博客网 时间:2024/05/16 06:46
STM32L151:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
LED_ON();
MX_DMA_Init();
MX_SPI1_Init();
MX_SPI2_Init();
MX_TIM3_Init();
MX_USART2_UART_Init();
//MX_IWDG_Init();
MX_RTC_Init();
MX_USART3_UART_Init();
MX_USART1_UART_Init();
printf("init complete...\r\n ");
LED_OFF();
unsigned int i=0;
while (1)
{
HAL_Delay(1000);
i++;
printf("i am alive...%d \r\n ",i);
}
}
static void MX_RTC_Init(void)
{
RTC_TimeTypeDef sTime;
RTC_DateTypeDef sDate;
/**Initialize RTC Only
*/
hrtc.Instance = RTC;
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = 127;
hrtc.Init.SynchPrediv = 255;
hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
/*
在这个函数中的配置过程:1、禁止写保护寄存拿起:WPR = 0XCA..0X53
2、设置初始化模式,检查时钟源是否正常(LES\LSI),轮询ISR寄存器的第六位是否为1,为1就表示可以往下执行,否则就死了。
3、对CR寄存器操作,对选择RTC计数器的频率、是否输出时钟,时钟极性、等最后把ISR的第六位清0,表示退出初始化模式,还有加上写保护
*/
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Enable the WakeUp
*/
/*
//配置RTC CR寄存器的低两位,选择RTC计数器时钟的频率这里是1HZ,CR寄存器的第十四位使能wakeup唤醒中断,给wakeup定时器赋值为10,这里就是没过一秒定时器的值减一,当定时器减到0的时候就是是ISR寄存器的相应标志位置1并且中断挂起寄存器也会置1 EXTI->PR,所以写中断服务程序的时候需要清除ISR的标志位还有PR的标志位。在当前的函数配置过程:
1、写保护破除
2、请0CR中的WUTE位,禁止唤醒定时器
3、选择1HZ的时钟,使能中断
4、开启中断线20-----对应的就是RTC唤醒,中断线17----对应RTC闹钟
这里RTC_WAKEUPCLOCK_CK_SPRE_16BITS是设置CR寄存器中的低三位,唤醒时钟选择,这里选择1HZ,10表示工作10S后进入唤醒中断
*/
if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 10, RTC_WAKEUPCLOCK_CK_SPRE_16BITS) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
- STM32,RTC周期性唤醒(wakeup)中断
- STM32L151C8周期性从待机模式唤醒(RTC Wakeup Timer)
- stm32f103 RTC周期性待机唤醒(一)
- stm32f103 RTC周期性待机唤醒(一)
- stm32f103 RTC周期性待机唤醒(一)
- RTC唤醒中断
- STM32F030使用RTC周期性唤醒STOP模式
- ACPI RTC WakeUp
- STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)
- spurious wakeup虚假唤醒
- 多线程中的条件变量和虚假唤醒(Spurious wakeup)
- C++多线程编程条件变量虚假唤醒(spurious wakeup)
- stm32的低功耗模式和RTC闹钟唤醒
- 关于STM32使用RTC唤醒停止模式的设置
- stm32进入停止模式,中断 唤醒
- pthread_cond_signal虚假唤醒(spurious wakeup)
- pthread_cond_signal虚假唤醒(spurious wakeup)
- pthread_cond_signal虚假唤醒(spurious wakeup)
- 如何求旋转矩阵
- Redis故障案例(一)-特定key批量丢失
- Unreal教学(6)——玩家输入和Pawn(Player Input and Pawns)
- maven 打包时mapper.xml打不进去问题
- 沃尔沃把自动驾驶卡车从瑞典带到798转了个圈【附视频】
- STM32,RTC周期性唤醒(wakeup)中断
- web语义化
- 怎么安装苹果系统mac os x虚拟机
- Uber将购2.4万辆沃尔沃 建无人车队 巴黎拟向共享单车征税
- matlab之dlmwrite换行写入txt
- js如何判断一个对象{}是否为空对象,没有任何属性
- OpSmart如何在各大运维平台中脱颖而出
- 汽车产业要变天!BAT大举入侵你的汽车
- 基于Vue2.x开发的音乐播放器app(推荐界面+懒加载+axios获取后端接口实现)