您的位置:首页 > 健康 > 美食 > 网易企业邮箱收费吗_东莞大岭山医院_网络推广渠道都有哪些_百度网络营销app下载

网易企业邮箱收费吗_东莞大岭山医院_网络推广渠道都有哪些_百度网络营销app下载

2025/1/12 0:53:05 来源:https://blog.csdn.net/qq_64219867/article/details/145032756  浏览:    关键词:网易企业邮箱收费吗_东莞大岭山医院_网络推广渠道都有哪些_百度网络营销app下载
网易企业邮箱收费吗_东莞大岭山医院_网络推广渠道都有哪些_百度网络营销app下载

需求描述

执行完毕正常代码之后,让MCU进入待机模式,设置闹钟,自动让MCU从待机模式中被唤醒。可以用led点亮熄灭显示是否唤醒。

应用场景:比如设计一个野外温度自动采集的设备,规定每小时采集一次温度,就可以定义一个1小时的闹钟,定时唤醒,采集温度,采集完进入待机模式,可以大大降低设备功耗。

CubeMX配置

初始配置HAL 库:创建hal首要配置内容---查询相关函数的方法-CSDN博客

配置USART1:选择异步通讯模式,其他保持默认

配置RTC:激活时钟源,然后点击时钟配置页,勾选LSE(外部低速晶振),其余保持默认。

配置LED等:用来表示当前的工作状态,查找PA1选择Output,配置位通用推挽输出,默认高电平(关灯状态)。

生成代码:HAL 库:创建hal首要配置内容---查询相关函数的方法-CSDN博客

配置keil:魔法棒勾选MicroLIB,点击Debug配置自动复位。

书写代码

第一步 重写printf函数

在usart.c文件最下方书写,当然记得头文件引入<stdio.h>

/* USER CODE BEGIN 1 */
int fputc(int ch, FILE *file)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);return ch;
}
/* USER CODE END 1 */

第二步书写 mian.c文件

  /* USER CODE BEGIN 2 */// 清除标志位if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB)){printf("从待机模式唤醒!\n");__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);}if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU)){printf("发生了唤醒事件!\n");__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);}printf("低功率实验:待机模式...\n");// 1. 开启LED灯,延时2s,模拟正常程序执行过程HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);HAL_Delay(2000);/* USER CODE END 2 */

其中开启LED灯为了方便在main.h文件进行了宏定义

#define LED2_Pin GPIO_PIN_1
#define LED2_GPIO_Port GPIOA
while (1){// 2. 进入待机模式printf("正常代码执行完毕,3s后进入待机模式...\n");HAL_Delay(3000);printf("进入待机模式,等待5s后RTC闹钟唤醒...\n");// 2.1 设置RTC闹钟RTC_SetAlarm(5);// 2.2 调库进入待机模式HAL_PWR_EnterSTANDBYMode();// 3. 以下代码不会执行printf("从待机模式中唤醒...\n");HAL_Delay(2000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

其中的设置RTC闹钟重写了一个函数在rtc.c文件的最下方

// 定义设置闹钟的函数
void RTC_SetAlarm(uint32_t s)
{// 1. 获取当前时间,类型就是RTC_TimeTypeDefRTC_TimeTypeDef currTime;HAL_RTC_GetTime(&hrtc, &currTime, RTC_FORMAT_BIN);// 2. 调库设置闹钟RTC_AlarmTypeDef sAlarm = {0};sAlarm.AlarmTime.Hours = currTime.Hours;sAlarm.AlarmTime.Minutes = currTime.Minutes;sAlarm.AlarmTime.Seconds = currTime.Seconds + s - 1;HAL_RTC_SetAlarm(&hrtc, &sAlarm, RTC_FORMAT_BIN);
}/* USER CODE END 1 */

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com