打印
[STM32F1]

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

[复制链接]
3705|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

主题

400

帖子

0

粉丝