Чт авг 16, 2018 17:58:20
void Halt_Init(void)
{
TIM1_Cmd(DISABLE);
//TIM2_CtrlPWMOutputs(DISABLE);
TIM2_Cmd(DISABLE);
//TIM3_Cmd(DISABLE);
TIM4_Cmd(DISABLE);
ADC1_Cmd(DISABLE);
//PWR_PVDCmd(DISABLE);
/* Switch to LSI as system clock source */
/* system clock prescaler: 1*/
// CLK_SYSCLKDivConfig(CLK_SYSCLKDIV_1);
// CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
//CLK_SYSCLKSourceSwitchCmd(ENABLE);
// while (CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == 0);
CLK_HSICmd(DISABLE);
//CLK_HSEConfig(CLK_HSE_OFF);
/* Set STM8 in low power */
//PWR_UltraLowPowerCmd(ENABLE);
/* Set GPIO in low power*/
GPIO_LowPower_Config(); // C ЭТИМ У МЕНЯ ВСЕ В ПОРЯДКЕ, НАПИСАЛ СВОЙ, НО ОН ДАЕТ ЭКОНОМИИ В ЕДИНИЦЫ мА.
/* Stop RTC Source clock */
//CLK_RTCClockConfig(CLK_RTCCLKSource_Off, CLK_RTCCLKDiv_1);
/* Stop clock RTC and LCD */
// CLK_PeripheralClockConfig(CLK_Peripheral_RTC, DISABLE);
//CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE);
}
Чт авг 16, 2018 18:47:31
Чт авг 16, 2018 18:51:27
Чт авг 16, 2018 19:20:47
Чт авг 16, 2018 20:22:52
void GPIO_LowPower_Config(void)
{
/* Configure unused pins as output push-pull 0 to enter low power */
/* Port A */
GPIO_Init(GPIOA, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_SLOW);
/* PORT B NOT AIN */
GPIO_Init(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_SLOW);
/* PORT B LEDS, SO THEY DON'T FLASH AT POWER ON */
GPIO_Init(GPIOB, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_SLOW);
/* PORT C NOT WAKEUP PIN!! */
GPIO_Init(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_SLOW);
/* PORT D */
GPIO_Init(GPIOD, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_SLOW);
/* PORT E */
GPIO_Init(GPIOE, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_SLOW);
/* PORT F */
GPIO_Init(GPIOF, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_SLOW);
}
void Halt_Init(void)
{
TIM1_Cmd(DISABLE);
//TIM2_CtrlPWMOutputs(DISABLE);
TIM2_Cmd(DISABLE);
//TIM3_Cmd(DISABLE);
TIM4_Cmd(DISABLE);
ADC1_Cmd(DISABLE);
//PWR_PVDCmd(DISABLE);
/* Switch to LSI as system clock source */
/* system clock prescaler: 1*/
// CLK_SYSCLKDivConfig(CLK_SYSCLKDIV_1);
// CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
//CLK_SYSCLKSourceSwitchCmd(ENABLE);
// while (CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == 0);
CLK_HSICmd(DISABLE);
//CLK_HSEConfig(CLK_HSE_OFF);
/* Set STM8 in low power */
//PWR_UltraLowPowerCmd(ENABLE);
/* Set GPIO in low power*/
GPIO_LowPower_Config();
/* Stop RTC Source clock */
//CLK_RTCClockConfig(CLK_RTCCLKSource_Off, CLK_RTCCLKDiv_1);
/* Stop clock RTC and LCD */
// CLK_PeripheralClockConfig(CLK_Peripheral_RTC, DISABLE);
//CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE);
}
void main(void)
{
Halt_Init();
//EXTI_ClearITPendingBit(EXTI_IT_PIN_7);
halt();
/*
полностью закомментированная программа
*/
}
Пт авг 17, 2018 07:12:06
CLK->PCKENR1 = CLK_PCKENR1_TIM1|CLK_PCKENR1_TIM2;
CLK->PCKENR2 = CLK_PCKENR2_AWU;
AWU->APR = 0x3e; // /64
AWU->TBR = 0x0B; // 4096*64/128E3 _2s
AWU->CSR |= AWU_CSR_AWUEN;
....
CLK->PCKENR1 = 0;
asm("halt");
Пт авг 17, 2018 19:09:53
без SPL можно обойтись
Пт авг 17, 2018 19:38:46
Пт авг 17, 2018 20:57:13
в HALT контроллер жрет 40 мА (именно миллиампер)
Пт авг 17, 2018 22:20:35
Сб авг 18, 2018 06:44:43
void main(void)
{
.......
/*AWU configuration ----------*/
AWU_Config();
.....
while (1)
{
......
halt(); /* Program halted */
/* Program re-starts here, thanks to AWU */
......
}
}
/**
* @brief Configure the AWU time base to 12s
* @param None
* @retval None
*/
void AWU_Config(void)
{
/* Initialization of AWU */
/* LSI calibration for accurate auto wake up time base*/
AWU_LSICalibrationConfig(LSIMeasurment());
/* The delay corresponds to the time we will stay in Halt mode */
AWU_Init(AWU_TIMEBASE_12S);
}
Сб авг 18, 2018 19:16:53
Другая причина это - "нашел в интернете код, но он для STM8L". Зачем искать, если в самой SPL именно для STM8S есть пример halt, отсюда вывод - он не заработал
Сб авг 18, 2018 19:35:53
Сб авг 18, 2018 19:50:24
Сб авг 18, 2018 20:16:17
Вс авг 19, 2018 09:21:16