stm32h743 低功耗学习总结

(17条消息) STM32低功耗(STM32G0+HAL库+STOP模式+中断唤醒)_love421的博客-CSDN博客_stm32g0低功耗

(17条消息) stm32 HAL 低功耗模式_紫枫洛天的博客-CSDN博客

1.STM32低功耗一共有三种模式:

(1)睡眠模式:功耗高,任意中断,任意事件唤醒
(2)停机模式:功耗较低,可以任意外部中断和RTC闹钟唤醒
(3)待机模式:功耗最低,但是只可以通过RTC唤醒,WKUP唤醒,NRST引脚复位,IWDG复位

2.小白扫盲
1)STOP模式下,只要有外部中断进来就可以唤醒,无需用户自己配置具体代码去实现唤醒操作。
2)STOP模式下被唤醒之后,单片机先执行外部中断回调函数,然后再接着刚刚进入STOP模式下的语句继续执行。
4)待机模式下被唤醒之后,单片机是类似于REST,从头开始执行的
5)RTC闹钟唤醒实质也就是外部中断唤醒,是由片内自己解决了
6)外部中断唤醒之后,在重新初始化一些引脚配置
7)对于串口唤醒这些特殊唤醒方式,其实使用的还是外部中断,进入低功耗之前需要将串口引脚重置然后配置成外部中断输入引脚,外部中断触发唤醒之后,再重新将引脚配置为串口即可。
8)对于一些输入脚进入低功耗之前可以全部配置为浮空输入,或者Anglog模式,是最省电的。
9)低功耗唤醒之后,默认时钟用的是HSI 8M,用户需要自己重新配置时钟,否则时钟不准确。
10)对于ADC脚想要外部中断唤醒,进入低功耗之前重新配置的之前需要使用HAL_ADC_DeInit(&hadc1);,否则可能不成功。
 

STM32H743系列微控制器提供了丰富的串口通信功能,包括USART(通用异步收发器)用于低功耗模式下实现数据传输。在使用低功耗模式时,你需要确保正确设置中断、电源管理和波特率配置。以下是一个简单的低功耗USART通信的C语言代码示例,这里假设你已经配置了USART和相应的GPIO引脚: ```c #include "stm32h7xx_hal.h" // 假设USART1被用作串口 USART_HandleTypeDef UsartHandle; // 初始化函数 void LowPowerUSARTInit(void) { // 配置USART UsartHandle.Instance = USART1; UsartHandle.Init.BaudRate = 9600; // 设置波特率 UsartHandle.Init.WordLength = USART_WordLength_8b; UsartHandle.Init.StopBits = USART_StopBits_1; UsartHandle.Init.Parity = USART_Parity_No; UsartHandle.Init.HardwareFlowControl = USART_HardwareFlowControl_None; // 如果需要,配置接收和发送中断 UsartHandle.Init.ReceiveFilter = USART_RXNE_Enable; UsartHandle.Init.TransmitDataCount = USART_TransmitDataCount_1To8; // 初始化并开启USART HAL_UART_Init(&UsartHandle); } // 发送数据函数,适用于低功耗模式 void SendLowPowerData(uint8_t data) { // 检查中断标志是否已满,避免阻塞 while (HAL_UART_GetFlagStatus(&UsartHandle, UART_FLAG_TXE) == RESET) {} // 写入数据 HAL_UART_Transmit(&UsartHandle, &data, 1, 1000); // 等待数据发送完成,超时1秒 } // 接收数据函数,适用于低功耗唤醒 uint8_t ReceiveLowPowerData() { // 启动接收 HAL_UART_Receive_IT(&UsartHandle, &RxBuffer, 1); // 进入低功耗模式,等待中断唤醒 __WFI(); // 返回接收的数据 return RxBuffer; } // USART中断处理函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { // 处理接收完成中断 // ... } // 相关问题-- 1. 如何在STM32H743中启用USART的接收中断? 2. 在低功耗模式下,如何安全地唤醒串口接收数据? 3. 如果在低功耗模式下长时间无数据接收,如何避免USART资源浪费? ``` 请注意,实际应用中可能还需要处理错误检查、电源管理状态转换以及适当的中断管理。这段代码仅提供了一个基础框架,具体实现可能需要根据项目需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值