OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2734|回复: 1

stm8s105k4t6 低功耗问题

[复制链接]

153

主题

262

帖子

0

精华

高级会员

Rank: 4

积分
893
金钱
893
注册时间
2012-6-29
在线时间
37 小时
发表于 2016-11-22 12:10:01 | 显示全部楼层 |阅读模式
1金钱
     //   在处理低功耗问题的时候  我发现我的电流有460ua  好大的电路,  我外围电路只有一个led 跟一个按键  ,我通过判断灯的亮灭来识别是否进入低功耗,  下面是我程序   高手指点一下问题在哪里  stm8s105k4t6的芯片
#include "stm8s.h"
#include "stm8s_clk.h"
#include "led.h"
#include "math.h"
#include "stm8s_adc1.h"
#include "stm8s_uart2.h"
//#include "stm8s_uart1.h"
#include "stm8s_beep.h"
#include "stm8s_exti.h"
#include "stm8s_tim1.h"
#include "stm8s_awu.h"
#include <assert.h>
#define Beep_OptionAdd  0x4803
#define LSI_128kHz 128000

#define unchar unsigned char


u16  exti_num=0;
u8 time_num=0;





void key_Init(void)
{
  
  //key
    GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_IT);
   //wifi_staus
    GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);
    //wifi_staus_led
    GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST);
   
    GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
   
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
    GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);
   
    EXTI_DeInit();
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);
   
}


void Tim1_Init(void)
{
  TIM1_TimeBaseInit(16,TIM1_COUNTERMODE_UP,1000,0);
  TIM1_ARRPreloadConfig(ENABLE);
  TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);
  TIM1_Cmd(ENABLE);
}
void halt_init(void)
{
    GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C,DISABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1,DISABLE);
   // TIM1_DeInit();
}
void AWU_init(void)
{
CLK->PCKENR2=CLK_PCKENR2_AWU;//使能AWU时钟??
AWU->TBR=0x0B;//AWU_AWUTB_2S;?//1~2s??
AWU->APR=0x3E;//分频??
AWU->CSR|=0x10;//AWU使能??
CLK->ICKR|=CLK_ICKR_SWUAH;//活跃停机模式(AWU使能情况)下,关闭电压调节器节省功耗??
FLASH->CR1|=FLASH_CR1_AHALT;//活跃停机模式下Flash掉电,默认只有停机模式才掉电,代价是唤醒时间增加至微秒级别??
}


int main(void)
{
  unsigned int i;
  u8 a=0;
  /*设置内部高速时钟16M为主时钟*/
   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);   
  // Uart2_Init();
   __enable_interrupt();
   //Tim1_Init();
   key_Init();
//AWU_init();
  // CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
  // CLK_SlowActiveHaltWakeUpCmd(ENABLE);
   //halt_init();  //  进入睡眠模式之前全部设备输入
   asm("halt");
   while(1)
   {

        GPIO_WriteHigh(GPIOD, GPIO_PIN_2);      //led  亮

   
   }
   


}



#pragma vector=7
__interrupt void EXTI_PORTC_IRQHandler(void)
{
  exti_num++;
if(exti_num%2==0)
  GPIO_WriteHigh(GPIOD, GPIO_PIN_2);
  else
    GPIO_WriteLow(GPIOD, GPIO_PIN_2);
}
#pragma vector=0xD
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)
{
  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
  if(exti_num==2000)
    exti_num=0;
   exti_num++;
    if(exti_num<400)
    {
    if(exti_num<200)
      GPIO_WriteHigh(GPIOD, GPIO_PIN_4);
    else
      GPIO_WriteLow(GPIOD, GPIO_PIN_4);
    }
  
  
}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165046
金钱
165046
注册时间
2010-12-1
在线时间
2102 小时
发表于 2016-11-27 14:37:18 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-28 22:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表