Код: Выделить всё
__halt()The interrupt mask is reset, allowing interrupts to be fetched. Then the
oscillator is stopped thus stopping the CPU and all internal peripherals,
reducing the microcontroller to its lowest possible power consumption. The
microcontroller resumes program execution after an external interrupt or
reset, by restarting the oscillator,and then, fetching the corresponding
external interrupt, which is generally an I/O interrupt, or the reset vector.
Кроме этого еще есть специальный регистр для внешних прерываний.Ser-B писал(а):Я так понимаю для начала надо настроить прерывание: PA_CR2_bit.C23 =1;?
Буду рад, если кому-нить пригодится.//------------------------------------------------------------------------------
// Начальная инициализация бибикалки - без калибровки
// Нагрузка бибикалки высокоомная - вход операционника через RC цепь
// Поэтому на работу сигнала SWIM бибикалка не влияет
//------------------------------------------------------------------------------
void beeper_init(void)
{
/*
// На работу бипера не влияет
PA_DDR_bit.DDR0 = 1; // 0-й пин порта A на выход
PA_CR1_bit.C10 = 1; // режим push-pull on
CPU_CFG_GCR_SWD = 1; // Отключаем SWIM
*/
// Включаем тактирование BEEP
CLK_PCKENR1_bit.PCKEN16 = 1;
// Выключаем LSI 38кгц
CLK_ICKCR_LSION = 0;
// Сброс предделителя beeper'a
BEEP_CSR2_bit.BEEPDIV = 0x1F;
// Выключить калибровочный таймер
BEEP_CSR1_bit.MSR = 0;
// Калибровочная константа
BEEP_CSR2_bit.BEEPDIV = 0x0F;
// Частота 1 кгц +-1км
BEEP_CSR2_bit.BEEPSEL = 0x00;
// Источник тактирования BEEP - LSI
CLK_CBEEPR_bit.CLKBEEPSEL0 = 1;
CLK_CBEEPR_bit.CLKBEEPSEL1 = 0;
// Включаем LSI 38кгц
CLK_ICKCR_LSION = 1;
SomeDelay(1000);
}
//------------------------------------------------------------------------------
// Звуковой сигнал
//------------------------------------------------------------------------------
void beep(long delay, unsigned char tone)
{
// Сохраняем значение по умолчанию
unsigned char st = BEEP_CSR2_bit.BEEPDIV;
// Изменяем тон звучания
BEEP_CSR2_bit.BEEPDIV = tone;
// Включаем сигнал
BEEP_CSR2_bit.BEEPEN = 1;
// Гудим-с
SomeDelay(delay);
// Выключаем сигнал
BEEP_CSR2_bit.BEEPEN = 0;
// Возвращаем тон по умолчанию
BEEP_CSR2_bit.BEEPDIV = st;
}
Код: Выделить всё
PB_DDR=MASK_PB_DDR_DDR5;
//PB_ODR=MASK_PB_ODR_ODR5;
PB_CR1=MASK_PB_CR1_C15; //пушпул
PB_CR2=MASK_PB_CR2_C25; //10MHzВ смысле?Lww писал(а):Даже если просто на пустой пин подаю "1", то на нем по-прежнему 0 вольт. Контроллер тупо не прошивается почему-то.
И правильно делает. Значит ещё не сгорел. Читать референс и даташит надо до, а не после.Lww писал(а): МК по-прежнему молчит.
РВ5 - true open-drain I/O !!!!!!!!!!!!In the open-drain output column, "T" defines a true open-drain I/O (P-buffer, weak pull-up, and protection diode to VDD are not implemented).
->RusikOk писал(а):простейший blink для STM8S003. светодиод на PA3, тактирование от внутреннего генератора. hex файл прошивки.
благодарю! но не моргает! а тактирование от внутреннего источника?oleg110592 писал(а):->RusikOk писал(а):простейший blink для STM8S003. светодиод на PA3, тактирование от внутреннего генератора. hex файл прошивки.