На самом деле я хочу, чтобы мой MCU спал, скажем, в разное время, например, сон на 512 мс или 8 мс или 2 мс или 1 мс, как только конкретное условие будет выполнено, поэтому я пытался написать самый простой код, который поможет моему MCU спать в течение 2 секунды, но, как он вступит в режим Halt, он никогда не просыпался. В чем может быть причина
Я использую STM8S003F3 программирование с голой металлом.
Код: Выделить всё
main(){
AWU_Init_2s();
while (1){
if ( counter_flag){
counter_flag=0;
HALT();
}
else {
AWU_Init_2s();
test ^=1; //just a debugging pin
}
}
}
< /code>
Создание функции < /p>
void AWU_Init_2s(void)
{
CLK_ICKR |= 0x08; // Enable LSI
while ((CLK_ICKR & 0x10) == 0); // Wait for LSI ready
// 2sec ON and 2sec off timer
AWU_CSR1 = 0x00; // Disable AWU first
AWU_TBR = 0x0E; // TBR = 14 for 2.048s period
AWU_APR = 0x17; // Safe default (not 0x3F)
AWU_CSR1 |= 0x10; // Enable AWU
}
Код: Выделить всё
if (++counter_ms>=2000){ // 2sec
counter_ms=0;
counter_flag =1;
HALT();
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... stm8s003f3
Мобильная версия