当前位置: 首页 > news >正文

新密市城乡建设局网站电脑培训机构哪个好

新密市城乡建设局网站,电脑培训机构哪个好,好用的h5制作软件,wordpress 重定向多【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电) 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解…

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电)

前文:
blog.csdn.net/weixin_53403301/article/details/128216064
【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)

关于外设配置:
blog.csdn.net/weixin_53403301/article/details/129060093
【STM32笔记】低功耗模式下GPIO、外设省电配置避坑

众所周知 GPIO配置为模拟输入最省电

在CubeMX中 有一项可以将未用到的引脚全部配置为模拟输入

在这里插入图片描述
若是不开启任何GPIO 以STM32L496RGT6为例 函数为:

/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();/*Configure GPIO pins : PC13 PC0 PC1 PC2PC3 PC4 PC5 PC6PC7 PC8 PC9 PC10PC11 PC12 */GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);/*Configure GPIO pins : PA0 PA1 PA2 PA3PA4 PA5 PA6 PA7PA8 PA9 PA10 PA11PA12 PA15 */GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/*Configure GPIO pins : PB0 PB1 PB2 PB10PB11 PB12 PB13 PB14PB15 PB3 PB4 PB5PB6 PB7 PB8 PB9 */GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);/*Configure GPIO pin : PD2 */GPIO_InitStruct.Pin = GPIO_PIN_2;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);/*Configure GPIO pin : PH3 */GPIO_InitStruct.Pin = GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);}

可以看到 在配置之前 需要先开启GPIO时钟

另外 如果配置了外部晶振或系统调试 则仅会开启时钟 而不会有任何引脚复用的配置

  __HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();

但无论是官方手册 还是官方例程 引脚配置前都应开启时钟 再进行配置
所以在进行模拟输入配置时 都会把所有的引脚时钟开启

以我做的最小系统板进行测试:
download.csdn.net/download/weixin_53403301/86930297

在这里插入图片描述
其主要耗电为两个LED灯
去掉这两个LED灯 并且进入待机模式后 实测只有8uA以下的功耗

这两个LED灯也是为了方便测试

在恒压源3.3V供电的前提下 从以下四个方面进行测试 每次都在电流稳定后读取 三次复位以后取平均值 精度10uA:

  1. 按CubeMX生成的所有闲置引脚模拟输入代码 直接烧录进去
  2. 按CubeMX生成的代码 去掉GPIOB和GPIOD的时钟(仅保留系统调试和高低速外部晶振) 再进行初始化
  3. 按CubeMX生成的代码 进行初始化以后 再去掉GPIOB和GPIOD的时钟(仅保留系统调试和高低速外部晶振)
  4. 不进行GPIO初始化 GPIO时钟仅保留系统调试和高低速外部晶振时钟 关闭GPIOB和GPIOD的时钟
  5. 只开启GPIOC、GPIOA、GPIOH的时钟,并且将C、A、H剩下的引脚配置为模拟输入 关闭GPIOB和GPIOD的时钟且不对其进行任何配置

其实测电流如下:

12345
按CubeMX生成的所有闲置引脚模拟输入代码 直接烧录进去按CubeMX生成的代码 去掉GPIOB和GPIOD的时钟(仅保留系统调试和高低速外部晶振) 再进行初始化按CubeMX生成的代码 进行初始化以后 再去掉GPIOB和GPIOD的时钟(仅保留系统调试和高低速外部晶振)不进行GPIO初始化 GPIO时钟仅保留系统调试和高低速外部晶振时钟 关闭GPIOB和GPIOD的时钟只开启GPIOC、GPIOA、GPIOH的时钟,并且将C、A、H剩下的引脚配置为模拟输入 关闭GPIOB和GPIOD的时钟且不对其进行任何配置
1.27mA1.12mA1.29mA1.08mA1.13mA(同2)

其中 功耗最低的是不进行模拟输入初始化的方案 仅关闭不需要的时钟 其次是仅配置需要保留的GPIO组时钟 并把其他引脚配置为模拟输入

在关闭时钟时 GPIO配置其实是无效的(还是会进行配置 将相关参数写入寄存器 但GPIO不会工作 所以无效)

所以方案2和方案5等价的 这两者都是在初始化之前没开启时钟 方案2虽然将寄存器写入 但功耗其实和5差不多 实验也存在误差 所以可以忽略不计

而方案4则更加直接了 没有进行任何GPIO配置 直接关闭不用的时钟

重点是1和3
1的话就是开启了所有时钟 然后把闲置引脚都配置为模拟输入
3则是进行1之后 再关闭闲置时钟
其中 3的耗电量是最高的 尽管初始化后面关闭了时钟 但其实最多就是跟1差不多 完全比不上2 4 5 甚至功耗比1还高(虽然可能存在误差)

所以 综合来说 以省电优先级顺序来看:
如果这一组GPIO都没用到过 那么直接不开启时钟就最省电
如果这一组GPIO有引脚用过了 时钟不能关 那么就将用过的引脚配置为模拟输入
尽量不要勾选CubeMX中的配置闲置引脚为模拟输入的选项 没用到的时钟还开启了会增加很多耗电

切记!!!:
不要将没用过的引脚配置为模拟输入 耗电量其实会稍微增加一点!
不要将没用过的GPIO时钟打开以后再配置为模拟输入 耗电量会增加很多 就算配置后再关时钟也没用!

低功耗模式扩展

在进入STOP模式时 GPIO会保留原本的状态 所以把开启后不需要再保留的GPIO配置为模拟输入确实省电 时钟的话不用的肯定关 其他的反正都会关(除了保留的时钟)

在进入SLEEP模式时 时钟并不会关闭 所以时钟应手动关闭 且将开启后的GPIO配置为模拟输入

待机模式和关机模式就更不用在意GPIO口耗电了

附上我进入低功耗前的GPIO配置函数:

/*!* @brief       	重置GPIO(都会进行),或再将除外部高低速晶振复用、SWCLK、SWDIO复用的所有GPIO配置为模拟输入(false)*								注意:用于串口唤醒等的引脚,不可配置为模拟输入,也不可关闭*								在进行GPIO初始化前,先将GPIO_DeInit,但是不做也不影响,不过还是建议跑一下*								以优先级顺序来看:*								如果这一组GPIO都没用到过 那么直接不开启时钟就最省电*								如果这一组GPIO有引脚用过了 时钟不能关 那么就将用过的引脚配置为模拟输入*								切记!!!:*								不要将没用过的引脚配置为模拟输入 耗电量其实会稍微增加一点!*								不要将没用过的GPIO时钟打开以后再配置为模拟输入 耗电量会增加很多 就算配置后再关时钟也没用!*								尽量不要勾选CubeMX中的配置闲置引脚为模拟输入的选项 没用到的时钟还开启了会增加很多耗电*								低功耗模式配置:*								在进入STOP模式时 GPIO会保留原本的状态 所以把开启后不需要再保留的GPIO配置为模拟输入确实省电 时钟的话不用的肯定关 其他的反正都会关(除了保留的时钟)*								在进入SLEEP模式时 时钟并不会关闭 所以时钟应手动关闭 且将开启后的GPIO配置为模拟输入*								待机模式和关机模式就更不用在意GPIO口耗电了*								https://blog.csdn.net/weixin_53403301/article/details/129055530** @param 	[in]	EnableNotDisable: 使所有GPIO变成模拟输入或不进行模拟配置** @return				None*/
void GPIO_Reset_Init(bool EnableNotDisable)
{
//	HAL_GPIO_DeInit(GPIOA,GPIO_PIN_2|GPIO_PIN_3);		//用于串口唤醒的引脚 不可变动HAL_GPIO_DeInit(GPIOA,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15);HAL_GPIO_DeInit(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9);HAL_GPIO_DeInit(GPIOC,GPIO_PIN_13|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12);HAL_GPIO_DeInit(GPIOD,GPIO_PIN_2);HAL_GPIO_DeInit(GPIOH,GPIO_PIN_3);if(EnableNotDisable){GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();/*Configure GPIO pins : PC13 PC0 PC1 PC2PC3 PC4 PC5 PC6PC7 PC8 PC9 PC10PC11 PC12 */GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);/*Configure GPIO pins : PA0 PA1 PA2 PA3PA4 PA5 PA6 PA7PA8 PA9 PA10 PA11PA12 PA15 */GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);//		//用于串口唤醒的 不可变动
//		GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
//		GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
//		GPIO_InitStruct.Pull = GPIO_NOPULL;
//		HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/*Configure GPIO pins : PB0 PB1 PB2 PB10PB11 PB12 PB13 PB14PB15 PB3 PB4 PB5PB6 PB7 PB8 PB9 */GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);/*Configure GPIO pin : PD2 */GPIO_InitStruct.Pin = GPIO_PIN_2;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);/*Configure GPIO pin : PH3 */GPIO_InitStruct.Pin = GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);}
}
http://www.r43.cn/news/149931.html

相关文章:

  • 怎么做免费推广网站樱花bt引擎
  • 千旺crm客户管理系统潮州seo建站
  • 延吉省住房和城乡建设厅网站网络优化培训骗局
  • 外贸接单网站排名榜一个关键词要刷多久
  • 中国外协机械加工订单网南京百度关键字优化价格
  • 如皋企业网站建设怎么看关键词的搜索量
  • google做网站框架如何进行搜索引擎优化
  • 淘宝联盟 网站备案网店运营是做什么的
  • 武汉网络公司排名丈哥seo博客工具
  • 网站建设开发服务费会计科目哪些平台可以发广告
  • 坦桑尼亚网站域名后缀如何建网站教程
  • 界面设计证书郑州seo外包顾问热狗
  • 做渠道的网站有哪些方面营销网站建设软件下载
  • 成都响应式网站建创建网站的基本流程
  • 网站前置审批怎么做东莞做网站哪里好
  • 网站建设与管理题目广州百度快速排名优化
  • 新疆建设工程信息网官网入口济南优化seo公司
  • 做网站帮外国人淘宝seo短视频网页入口营销
  • 晋州做网站怎么建立网站?
  • 学校网站建设要求合肥做网站哪家好
  • 东莞气缸东莞网站建设外链平台
  • 高端建站是什么意思百度竞价网站
  • 佛山网站设计外包成都网站建设公司排名
  • 辽宁城市建设网站培训机构如何招生营销
  • 北京网站建设 专业10年关键字
  • 做网站自己不会维护怎么办河南郑州最新消息
  • 即墨网站建设电话青岛网络优化哪家专业
  • 直接买个域名就能自己做网站长沙网站优化指导
  • 创意网站 案例 下载免费推广方式有哪些
  • html做的图片网站天津网站快速排名提升