完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void halt_gpio_init(void)
{ disableInterrupts(); CLK_DeInit(); CLK_SYSCLKSourceSwitchCmd (ENABLE); //使能切换 CLK_LSICmd (ENABLE); //使能LSI while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY)==RESET); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI); //LSI为系统时钟 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)//等待时钟稳定 CLK_HSICmd(DISABLE); tiM1_DeInit(); TIM1_Cmd(DISABLE); TIM2_DeInit(); TIM2_Cmd(DISABLE); TIM3_DeInit(); TIM3_Cmd(DISABLE); TIM4_DeInit(); TIM4_Cmd(DISABLE); TIM5_DeInit(); TIM5_Cmd(DISABLE); I2C_DeInit(I2C1); I2C_Cmd(I2C1,DISABLE); USART_DeInit(USART1); USART_Cmd(USART1,DISABLE); USART_DeInit(USART2); USART_Cmd(USART1,DISABLE); USART_DeInit(USART3); USART_Cmd(USART1,DISABLE); // RTC_DeInit(); ADC_DeInit(ADC1); ADC_Cmd(ADC1,DISABLE); ADC_TempSensorCmd(DISABLE); ADC_VrefintCmd(DISABLE); ADC_ChannelCmd(ADC1,ADC_Channel_18,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM3,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM5,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_I2C1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_USART1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_USART2,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_USART3,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE); // CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_LCD,DISABLE); GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOC); GPIO_DeInit(GPIOD); GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); // GPIO_Init(GPIOA,GPIO_Pin_0|GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB, GPIO_Pin_1,GPIO_Mode_Out_PP_High_Slow); //wakeup 7137 GPIO_Init(GPIOB, GPIO_Pin_3,GPIO_Mode_Out_PP_High_Slow); //note 7137 recv information GPIO_Init(GPIOB, GPIO_Pin_6,GPIO_Mode_Out_PP_High_Slow); //note 7137 recv information GPIO_Init(GPIOD, GPIO_Pin_0,GPIO_Mode_Out_PP_High_Slow); //LED GPIO_Init(GPIOA, GPIO_Pin_2,GPIO_Mode_In_PU_IT); //ring GPIO_Init(GPIOA, GPIO_Pin_3,GPIO_Mode_In_PU_IT); //preview GPIO_Init(GPIOB, GPIO_Pin_7,GPIO_Mode_In_PU_IT); //OK GPIO_Init(GPIOC, GPIO_Pin_0, GPIO_Mode_Out_PP_High_Slow); //sda GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow); //scl GPIO_Init(GPIOB, GPIO_Pin_4,GPIO_Mode_In_PU_IT); //2.4G EXTI_DeInit(); if(get_monitor()==ON) { // log("open IRn"); GPIO_Init(GPIOB, GPIO_Pin_5,GPIO_Mode_In_PU_IT); //IR EXTI_SetPinSensitivity(EXTI_Pin_5,EXTI_Trigger_Falling); } if(get_sensitivity_setting()==HIGH) GPIO_Init(GPIOB, GPIO_Pin_2,GPIO_Mode_Out_PP_High_Slow); //灵敏度高 else GPIO_Init(GPIOB, GPIO_Pin_2,GPIO_Mode_Out_PP_Low_Slow); //灵敏度低 EXTI_SetPinSensitivity(EXTI_Pin_2,EXTI_Trigger_Falling); //中断配置 EXTI_SetPinSensitivity(EXTI_Pin_3,EXTI_Trigger_Falling); EXTI_SetPinSensitivity(EXTI_Pin_6,EXTI_Trigger_Falling); EXTI_SetPinSensitivity(EXTI_Pin_7,EXTI_Trigger_Falling); EXTI_SetPinSensitivity(EXTI_Pin_4,EXTI_Trigger_Rising); EXTI_ClearITPendingBit(EXTI_IT_PortB); EXTI_ClearITPendingBit(EXTI_IT_PortD); enableInterrupts(); Flash_OFF_act_halt(); } } default: if(flag==0) { bjy_disable_i2c(); // halt_init(); PWR_DeInit(); PWR_PVDCmd(DISABLE); CLK_HaltConfig(CLK_Halt_FastWakeup, ENABLE); halt_gpio_init(); PWR_FastWakeUpCmd(ENABLE); PWR_UltraLowPowerCmd(ENABLE); //超低功耗 halt(); bjy_clk_init(); bjy_usart_init(); bjy_adc_init(); bjy_adc_conv(); log("halt overn"); bjy_rtc_init(); } break; |
|
相关推荐
2个回答
|
|
|
|
|
|
STM8L系列微控制器在低功耗模式下电流大约为1.35mA的原因可能与以下几个因素有关:
1. 低功耗模式:STM8L系列微控制器具有多种低功耗模式,如待机模式、掉电模式等。在这些模式下,微控制器的功耗会显著降低。然而,即使在低功耗模式下,微控制器仍然需要一定的电流来维持其基本功能,如时钟、内存等。 2. 时钟系统:在您提供的代码片段中,您使用了`CLK_DeInit()`函数来初始化时钟系统。这可能会导致时钟系统在低功耗模式下仍然消耗一定的电流。此外,您还使用了`CLK_SYSCLKSourceSwitchCmd(ENABLE)`来使能系统时钟源切换,这也可能影响功耗。 3. 中断和外设:在低功耗模式下,微控制器的中断和外设可能会影响功耗。在您提供的代码片段中,您使用了`disableInterrupts()`函数来禁用中断,这有助于降低功耗。然而,如果还有其他外设在运行,它们可能会增加功耗。 4. 内部电路:STM8L系列微控制器的内部电路设计也会影响其在低功耗模式下的功耗。例如,内部内存、寄存器和其他电路元件可能会消耗一定的电流。 为了进一步降低STM8L系列微控制器在低功耗模式下的功耗,您可以尝试以下方法: 1. 关闭不需要的外设和中断。 2. 使用更低功耗的时钟源,如LSI或LSE。 3. 在不需要时,将微控制器置于更深层次的低功耗模式,如掉电模式。 4. 优化软件,减少不必要的操作和计算。 请注意,具体的功耗还取决于您的应用程序和硬件设计。为了获得更准确的功耗数据,建议您使用专业的功耗测量工具进行测试。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1649 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
994 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
693 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1613 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 16:23 , Processed in 0.811281 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号