nanorobot 3 12 апреля, 2022 Опубликовано 12 апреля, 2022 · Жалоба ICKCRСоздаю пустой проект для STM8L151C8T6 компилятор IAR 3.11.4. Стартую с отладчиком STLink, наблюдаю состояние регистра ICKCR - бит HSION = 1, а бит HSIRDY = 0 и привести его в состояние 1 никак не получается, хотя по сбросу оба должны быть в 1. Какой то startup IAR-а неверно инициализирует систему тактирования? Где посмотреть, как исправить? Аналогичную проблему имел в тестовом проекте embOS / STM8L151. Видимо как следствие не стартовал таймер TIM4 -выбраннвй в качестве системного для embOS. Так же в обоих случаях не иогу запустить тактирование от HSE -внешний кварц на 16 МГц. Хтоя в других примерах, "готовых", переключение тактирования HSI/HSE и обратно затруднений не вызывало. Направьте на путь истинный пжлст... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 12 апреля, 2022 Опубликовано 12 апреля, 2022 · Жалоба 4 часа назад, nanorobot сказал: ICKCRСоздаю пустой проект для STM8L151C8T6 компилятор IAR 3.11.4. Стартую с отладчиком STLink, наблюдаю состояние регистра ICKCR - бит HSION = 1, а бит HSIRDY = 0 и привести его в состояние 1 никак не получается, хотя по сбросу оба должны быть в 1. С чего бы это? В реф.мануале указано: "Reset value: 0x11" Т.е.: после RESET должно быть HSIRDY==0. Что Вы и наблюдаете. Цитата Какой то startup IAR-а неверно инициализирует систему тактирования? Стартап IAR-а не инициализирует никакую периферию STM8. А зачем Вам эти бит и регистр? Я их вообще не использовал. И без них можно выбрать источник тактирования. У меня так: __ramfunc void CLKinit(u8 cclkRun) { struct CLKinitT { u8 src, ckdivr; } static t[CLK_M_n] = { {CLKSRC_ID_ML, BSIZE_SHIFT_MAX(CLKDIV_ML)}, {CLKSRC_ID_MH, BSIZE_SHIFT_MAX(CLKDIV_MH)}, {CLKSRC_ID_MT, BSIZE_SHIFT_MAX(CLKDIV_MT)}}; u8 i; CLK.SWCR = 0; asm("NOP"); asm("NOP"); CLKinitT const *p = &t[cclkRun]; if (CLK.SCSR != (i = p->src)) { CLK.SWR = i; for (CLK.SWCR = B0 | B1; CLK.SWCR & B0; ); } CLK.CKDIVR = p->ckdivr; CLK.CRTCR = 0; } Т.е. - через регистры CLK.SWR/CLK.SWCR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться