[STM32F1] 求助:pwr的时钟要使能; 为什么加入这条后原来输出高电平的引脚会变为低电平

[复制链接]
3954|3
 楼主| 张允 发表于 2015-1-13 15:46 | 显示全部楼层 |阅读模式
3、pwr的时钟要使能,即RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
为什么加入这条后原来输出高电平的引脚会变为低电平
 楼主| 张允 发表于 2015-1-13 15:49 | 显示全部楼层
这个思路:
  引用:https://bbs.21ic.com/icview-558242-1-1.html这个帖子
具体要点为:
1、所有IO管脚,如果高阻状态端口是高电平,就设成上拉输入,如果高阻状态是低电平,设成下拉输入,如果高阻是中间状态,设成模拟输入。这个很多人都提到过,必须的。作为输出口就免了,待机你想输出个什么东西,一定要输,硬件上加上下拉就可以了
2、两个晶振输入脚要remap成普通IO!!!使用内部晶振。
3、pwr的时钟要使能,即RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);这个也相当重要
4、关闭jtag口,并设成普通IO;
5、注意助焊膏的质量!!!注意电路板层之间是否进水!!!!
掌握这几项要点,再设中断什么的都行,整个世界清静了!!!完全低能耗。
 楼主| 张允 发表于 2015-1-13 15:50 | 显示全部楼层
这个程序架构:
引用:http://blog.sina.com.cn/s/blog_542bad910101sads.html
结合下文的高手经验,反复摸索,
standby模式1.9uA,PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
stop模式:11uA, PWR_EnterSTANDBYMode();
实验证明,将IO端口设成IPU/IPD/AIN/PPOUT=1/PPOUT=0/ODOUT=0,电流是基本相同的,最可怕的就是GPIO浮空,且电路上未外接上拉下拉,这样电流就会比较大。
原来以来PPOUT要是输出为0,就会浪费电流,其实只要不负载,电流和ODOUT=0时一样样的。
以下为部分代码
void MUC_SLEEP(void)
{
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);  //完全失能JTAG/SWD 不关电流也好像不影响
GPIO_PinRemapConfig( GPIO_Remap_PD01 , ENABLE );//晶振为GPIO 不关电流也好像不影响
RCC_LSEConfig(RCC_LSE_OFF);//关闭RTC  不关电流也好像也不影响
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
ADC_CONFIG(DISABLE);
USART_DeInit(USART1);
USART_DeInit(USART2);
USART_DeInit(USART3);
USART_DeInit(UART5);
EXTI_INITIAL(ENABLE);//以下端口的设置最有影响
GPIO_PIN_INITIAL(GPIOA,GPIO_Pin_All,GPIO_Mode_AIN,0); //此处没做外部唤醒 仅用于测试 EXTI合理设置GPIO不影响电流
GPIO_PIN_INITIAL(GPIOB,GPIO_Pin_All,GPIO_Mode_AIN,0);
GPIO_PIN_INITIAL(GPIOC,GPIO_Pin_All,GPIO_Mode_AIN,0);
GPIO_PIN_INITIAL(GPIOD,GPIO_Pin_All,GPIO_Mode_AIN,0);
//PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);//STOP模式
PWR_EnterSTANDBYMode();//standby模式
}
 楼主| 张允 发表于 2015-1-13 16:14 | 显示全部楼层
有人能解答吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

402

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部