STM32 новичку в ARM что к чему
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Спасибо. )
Еще маленький.
Если мне надо в условии проверить 4 бита в порту (в регистре) на то, что они установлены. Можно сделать это одним махом? Или надо сначала переменную завести, потом в нее скопировать содержимое этого регистра, а потом уже сравнивать с каким-то значением?
Просто моя конструкция типа такой:
if (GPIOA->ODR & 0x0F)
нифига не хочет работать. Она истинна в любом случае, если в порту не ноль. А мне надо, чтобы истина была только когда первые 4 бита установлены...
Еще маленький.
Если мне надо в условии проверить 4 бита в порту (в регистре) на то, что они установлены. Можно сделать это одним махом? Или надо сначала переменную завести, потом в нее скопировать содержимое этого регистра, а потом уже сравнивать с каким-то значением?
Просто моя конструкция типа такой:
if (GPIOA->ODR & 0x0F)
нифига не хочет работать. Она истинна в любом случае, если в порту не ноль. А мне надо, чтобы истина была только когда первые 4 бита установлены...
Станислав
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
if (GPIOA->ODR & 0x000F == 0x000F) не подойдёт?
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Блин. Решение простое и гениальное. )) Его тоже запомню.
Но, боюсь, чутка не то. Т.к. остальные биты в регистре могут тоже не равняться нулю. А мне нужно проверить только первые 4 бита.
Добавлено after 48 seconds:
Ой! Он же будет результат сравнивать! А там как раз уже отфильтрует все. Простите.
Добавлено after 35 seconds:
Все. Это то, что надо! Спасибо. Здоровья вам!
Добавлено after 2 minutes 13 seconds:
З.Ы. ))) Моя программа все равно не работает.
Добавлено after 1 minute 12 seconds:
Вот так надо!
if ((GPIOA->ODR & 0x0F) == 0x0F)
Но, боюсь, чутка не то. Т.к. остальные биты в регистре могут тоже не равняться нулю. А мне нужно проверить только первые 4 бита.
Добавлено after 48 seconds:
Ой! Он же будет результат сравнивать! А там как раз уже отфильтрует все. Простите.
Добавлено after 35 seconds:
Все. Это то, что надо! Спасибо. Здоровья вам!
Добавлено after 2 minutes 13 seconds:
З.Ы. ))) Моя программа все равно не работает.
Добавлено after 1 minute 12 seconds:
Вот так надо!
if ((GPIOA->ODR & 0x0F) == 0x0F)
Станислав
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Где-то прочитал, что если по умолчанию включить СисТик таймер, то в его настройки будут при частоте 72 МГц такие, что один круг счета таймера = 1 мс. Вчера с ним игрался.
Так вот, в документации не увидел нигде значение в регистре STK_LOAD типа 9000 или 8999. Они по умолчанию равны нулю.
Ладно, это мелочи.
Также значение его счета (круга) не точное... Сделав настройки МК работать от внешнего резонатора с ФАПЧ в 72 МГц, а тактирование таймера от шины АНВ/8. По моим подсчетам 1 тик таймера = 1 / 9 МГц = 111 нс. Умножаем это на 9000 в счетном регистре, которое мы туда грузим, получается 999000 нс = 999 мкс = 0,9 мс. А это не точно 1 мс.
Т.к. регистр счетный 24 битный, то туда можно загрузить довольно большое число. Я загрузил 9000000 (точнее по рекомендациям документов 8999999) и получил счет таймера в 1 секунду. Ну, почти.
Так вот, в документации не увидел нигде значение в регистре STK_LOAD типа 9000 или 8999. Они по умолчанию равны нулю.
Ладно, это мелочи.
Также значение его счета (круга) не точное... Сделав настройки МК работать от внешнего резонатора с ФАПЧ в 72 МГц, а тактирование таймера от шины АНВ/8. По моим подсчетам 1 тик таймера = 1 / 9 МГц = 111 нс. Умножаем это на 9000 в счетном регистре, которое мы туда грузим, получается 999000 нс = 999 мкс = 0,9 мс. А это не точно 1 мс.
Т.к. регистр счетный 24 битный, то туда можно загрузить довольно большое число. Я загрузил 9000000 (точнее по рекомендациям документов 8999999) и получил счет таймера в 1 секунду. Ну, почти.
Станислав
Re: STM32 новичку в ARM что к чему
[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3566404#p3566404"]в документации не увидел нигде значение в регистре STK_LOAD типа 9000 или 8999. Они по умолчанию равны нулю.[/uquote]если совсем не трогать - да, нули. Он инициализируется в sysinit. SysTick с периодом 1мс - негласный де-факто стандарт, а не нечто прям технически обязательное.
- Реклама
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Почему-то не хочет запускаться этот код:
Батарейку на своей плате БлюПилл подключил, точнее, не батарейку, а кинул на 3.3 В проводок и на Vbat.
Смотрю в отладчике, а у меня все четко, все включается кроме одного, в регистр RTC_PRLL не записывается константа 0x7FFF. Вот в счетный регистр записывается, а в этот игнор. Ноль как был, так и остался.
И счтитать потом начинает не декрементом, а инкрементом. Т.е. К начальному значению 0x7FFF прибавляет по единице каждый раз.
Как должно понять не могу. В описании РМ0008 искал, какой это регистр и как работает, но там про это не увидел.
З.Ы. и еще вопросик. Чтобы организовать прерывание от RTC надо уже про NVIC читать? Потому что СисТик прерывания работают сами, что вполне удобно. )
Спойлер
Код: Выделить всё
//======== Start RTC ===============
RCC->APB1ENR |= (RCC_APB1ENR_BKPEN|RCC_APB1ENR_PWREN); // ON clock для бэкап и повер
PWR->CR |= PWR_CR_DBP; // разрешаем работу в бэкапдомене, установив 1 в ДБП
RCC->BDCR |= RCC_BDCR_BDRST; //Сбросить Backup область
RCC->BDCR &= ~(RCC_BDCR_BDRST);
RCC->BDCR |= (RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_LSE); //Выбрать LSE источник (кварц 32768) и подать тактирование
RCC->BDCR |= RCC_BDCR_LSEON; //Включить LSE
while ((RCC->BDCR & RCC_BDCR_LSERDY) != RCC_BDCR_LSERDY) //Дождаться включения
{
}
while (!(RTC->CRL & RTC_CRL_RTOFF)) //проверить закончены ли изменения регистров RTC
{
}
//while (!(RTC->CRL & RTC_CRL_RSF)) //проверить флаг синхронизации регистров RTC
//{
//}
RTC->CRL |= RTC_CRL_CNF; //Разрешить Запись в регистры RTC
RTC->CRL &= ~(RTC_CRL_SECF);
RTC->PRLL = 0x7FFF;
//RTC->PRLL = 0x7FFF; //Настроить делитель на 32768 (32767+1)
RTC->CNTL = 0x7FFF;
RTC->CRL &= ~(RTC_CRL_CNF); //Запретить запись в регистры RTC в этот момент идет обновление регистров
while (!(RTC->CRL & RTC_CRL_RTOFF)) //Дождаться окончания записи
{
}
RTC->CRL &= ((uint16_t)~RTC_CRL_RSF); //Синхронизировать RTC (записываем туда ноль)
while((RTC->CRL & RTC_CRL_RSF) != RTC_CRL_RSF) //Дождаться синхронизации
{
}
PWR->CR &= ~(PWR_CR_DBP); //запретить доступ к Backup области
RTC->CRH |= RTC_CRH_SECIE; // Включить прерывания каждую секунду
//======== END Start RTC ===========
Смотрю в отладчике, а у меня все четко, все включается кроме одного, в регистр RTC_PRLL не записывается константа 0x7FFF. Вот в счетный регистр записывается, а в этот игнор. Ноль как был, так и остался.
И счтитать потом начинает не декрементом, а инкрементом. Т.е. К начальному значению 0x7FFF прибавляет по единице каждый раз.
З.Ы. и еще вопросик. Чтобы организовать прерывание от RTC надо уже про NVIC читать? Потому что СисТик прерывания работают сами, что вполне удобно. )
Станислав
Re: STM32 новичку в ARM что к чему
Снова - этот регистр только на запись. Прочитать, что было записано - невозможно.
прерывание:
прерывание:
Код: Выделить всё
....
NVIC_EnableIRQ(RTC_IRQn);
}
// Обработчики прерываний
//
void RTC_IRQHandler(void) {
static uint32_t tmp;
do {
tmp = RTC->CNTH;
unixtime = ((tmp << 16 ) | RTC->CNTL);
} while(tmp != RTC->CNTH);
....
GPIOC->ODR ^= (1 << 13);
}
Последний раз редактировалось uldemir Вс фев 10, 2019 09:58:26, всего редактировалось 1 раз.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Так я же не читаю... Я думал, его может отладка показывать...
А счет в счетном регистре RTC_CNT в какую сторону должен идти?
Почему туда записывают то число, которое по сути надо вычитать, чтобы получить секундные интервалы?
Где описана эта функция? NVIC_EnableIRQ(RTC_IRQn) А то может у меня не все библиотеки подключены...
А счет в счетном регистре RTC_CNT в какую сторону должен идти?
Почему туда записывают то число, которое по сути надо вычитать, чтобы получить секундные интервалы?
Где описана эта функция? NVIC_EnableIRQ(RTC_IRQn) А то может у меня не все библиотеки подключены...
Станислав
Re: STM32 новичку в ARM что к чему
Увы, раз регистр не читается, то и отладка его не показывает. RTC_CNT считает вперед, разумеется.
Для секундных "интервалов" надо записывать в RTC_PRLL. При этом RTC_DIV считает назад. Т.е. записали PRLL получили секундные импульсы, которые уже "тикают" RTC_CNT. Вперед.
NVIC_EnableIRQ, DisableIRQ, SetPriority итд - это стандартные CMSISовские подстановки, чтобы не вычислять ручками биты итп. У моего кейла, говорит, что в core_cm3.h. Но абсолютно так же я эту "функцию" пользую в MSP432.
Для секундных "интервалов" надо записывать в RTC_PRLL. При этом RTC_DIV считает назад. Т.е. записали PRLL получили секундные импульсы, которые уже "тикают" RTC_CNT. Вперед.
NVIC_EnableIRQ, DisableIRQ, SetPriority итд - это стандартные CMSISовские подстановки, чтобы не вычислять ручками биты итп. У моего кейла, говорит, что в core_cm3.h. Но абсолютно так же я эту "функцию" пользую в MSP432.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Т.е. Счетчик считает с интервалом в 1 секунду вперед. А секундные прерывания приходят не от него совсем.
Спасибо!
Спасибо!
Станислав
Re: STM32 новичку в ARM что к чему
Секундные приходят по факту update. и включаются там: RTC->CRH = RTC_CRH_SECIE; Там же можно включить прерывание по будильнику и переполнению (а вот оно нафик нужно? 136 лет спустя?).
Только есть один маленький нюанс, что прерывание происходит по перезагрузке RTC_DIV, а изменение RTC_CNT происходит спустя 1/32768 секунды.
https://radiokot.ru/forum/viewtopic.php ... 1#p3522221 <- тут я хвастался своими часиками на синей таблетке. счетчик CNT нужен, так как он работает от резервной батарейки. Хотя, можно просто читать его по включению, а дальше по прерываниям. Но мне нравится всегда использовать первичные данные, а не косвенные.
Только есть один маленький нюанс, что прерывание происходит по перезагрузке RTC_DIV, а изменение RTC_CNT происходит спустя 1/32768 секунды.
https://radiokot.ru/forum/viewtopic.php ... 1#p3522221 <- тут я хвастался своими часиками на синей таблетке. счетчик CNT нужен, так как он работает от резервной батарейки. Хотя, можно просто читать его по включению, а дальше по прерываниям. Но мне нравится всегда использовать первичные данные, а не косвенные.
Последний раз редактировалось uldemir Вс фев 10, 2019 11:28:54, всего редактировалось 2 раза.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
У меня мозги так сильно не соображают. И по сути для меня использование часов реального времени и сводится к тому, чтобы организовать точные секундные интервалы по прерыванию. А там уже обрабатывай как хочешь. Да и то, что в Счетном регистре таймера все происходит с задержкой тоже не принципиально, потому что я его вроде как и не использую... И пока не придумал, куда его можно применить вообще. Тем паче, что он еще и разбит на два 16 битных.
Добавлено after 31 minute 53 seconds:
З.Ы. Целый день тупил, почему у меня не работает прерывание... А оказывается внимательным надо быть и всего лишь.
RTC_IRQHandler
RCC_IRQHandler
Добавлено after 9 minutes 39 seconds:
Теперь другие чудеса. ) Выдергиваю питания от батарейки. Перезагружаю МК. А он один хрен запускается и начинает обрабатывать это прерывание, причем как и настроил 1 раз в секунду... Проверил мультиметром, на выводе куда батарею надо подключать всего 0,2 В.
В отладке в прерывание не заходит... Не знаю как проверить в отладке все это, но настраивается все как и раньше очень даже хорошо. Выполняет код, но в прерывание в отладке ниразу не зашел. Хотя все пашет.
Или после того, как МК ушел в главный цикл, отладка больше не работает?
Добавлено after 59 seconds:
Да, нет. Работает проверил. Светодиоды на плате не моргают. Ждет прерывания. Но в отладке туда заходить не хочет.
Добавлено after 31 minute 53 seconds:
З.Ы. Целый день тупил, почему у меня не работает прерывание... А оказывается внимательным надо быть и всего лишь.
RTC_IRQHandler
RCC_IRQHandler
Добавлено after 9 minutes 39 seconds:
Теперь другие чудеса. ) Выдергиваю питания от батарейки. Перезагружаю МК. А он один хрен запускается и начинает обрабатывать это прерывание, причем как и настроил 1 раз в секунду... Проверил мультиметром, на выводе куда батарею надо подключать всего 0,2 В.
В отладке в прерывание не заходит... Не знаю как проверить в отладке все это, но настраивается все как и раньше очень даже хорошо. Выполняет код, но в прерывание в отладке ниразу не зашел. Хотя все пашет.
Или после того, как МК ушел в главный цикл, отладка больше не работает?
Добавлено after 59 seconds:
Да, нет. Работает проверил. Светодиоды на плате не моргают. Ждет прерывания. Но в отладке туда заходить не хочет.
Станислав
Re: STM32 новичку в ARM что к чему
У меня тоже поначалу были проблемы с написанием. Так вот, если пройтись по дефинициям, то в файле stm32f103xb.h есть typedef enum IRQn_Type. Вот эти enumы и надо поставлять в функции NVIC_. И они же, заменив "n" на конце на Handler, являются названиями обработчиков.
Моя инициализация RTC.Чтобы моргал светодиод надо PC13 настроить на вывод.
Моя инициализация RTC.
Спойлер
Код: Выделить всё
void rtc_init(void) {
uint32_t tmp;
RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN;
PWR->CR |= PWR_CR_DBP ; // enable access Backup domain
// здесь проверяем конфигурацию часового генератора и если есть малейшее отличие
// всё сбрасываем и начинаем по-новой
if ((RCC->BDCR & (RCC_BDCR_RTCSEL_LSE | RCC_BDCR_RTCEN | RCC_BDCR_LSEON)) != (RCC_BDCR_RTCSEL_LSE | RCC_BDCR_RTCEN | RCC_BDCR_LSEON)) {
restoreFromBackup();
RCC->BDCR = RCC_BDCR_BDRST;
RCC->BDCR = RCC_BDCR_RTCSEL_LSE | RCC_BDCR_RTCEN | RCC_BDCR_LSEON;
// Poll the LSERDY flag in the RCC_BDCR register
while ((RCC->BDCR & RCC_BDCR_LSERDY) == 0) continue;
correction = 0;
BKP->RTCCR = BKP_RTCCR_CAL & correction;
while (!(RTC->CRL & RTC_CRL_RTOFF)) continue;
RTC->CRL |= RTC_CRL_CNF;
RTC->CNTH = 0x0000u;
RTC->CNTL = 0x0000u;
RTC->PRLL = preload;
RTC->PRLH = 0;
RTC->CRL &= ~RTC_CRL_CNF;
}
// Poll the RSF bit in the RTC_CRL register until the RTC registers are synchronized
while ((RTC->CRL & RTC_CRL_RSF) == 0) continue;
// Poll the RTOFF bit in the RTC_CRL register until the last operation on the RTC registers is over
while ((RTC->CRL & RTC_CRL_RTOFF)== 0) continue;
RTC->CRH = RTC_CRH_SECIE;
do {
tmp = RTC->CNTH;
unixtime = ((tmp << 16 ) | RTC->CNTL);
} while(tmp != RTC->CNTH);
/*
раскомментировать одну из строк, если есть желание на PC13 получить секундные импульсы (скважность 32768!)
или 1/64 частоты часового кварца. Иначе, там будет перекидываться уровень по прерывания от RTC
При батарейном питании, этот выход не работает.
*/
//BKP->RTCCR = (BKP_RTCCR_ASOS | BKP_RTCCR_ASOE);
//BKP->RTCCR = BKP_RTCCR_CCO;
NVIC_EnableIRQ(RTC_IRQn);
}А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Да. у меня работает. У меня на одном порту висит 8 светодиодов, которые в двоичном коде показывают счет. Инкремент происходит порта при каждом прерывании. Сначала настроил от СисТик таймера. Но потом интереснее стало от Часов реального времени.
С отладчиком разобрался. Ему просто, чтобы натикать целую секунду при нажатой F11 надо очень долго ждать....
Остались небольшие непонятки с настройкой Бэкап домена без питания от батареи. Т.е. вообще без питания.
Пока плату лапал, все таки повис. )))))))
Добавлено after 6 minutes 51 second:
И как в отладке можно быстрее сделать, чтобы дождаться прерывания не через 10 лет????
С отладчиком разобрался. Ему просто, чтобы натикать целую секунду при нажатой F11 надо очень долго ждать....
Остались небольшие непонятки с настройкой Бэкап домена без питания от батареи. Т.е. вообще без питания.
Добавлено after 6 minutes 51 second:
И как в отладке можно быстрее сделать, чтобы дождаться прерывания не через 10 лет????
Последний раз редактировалось СКАЗОЧНИК Вс фев 10, 2019 12:09:43, всего редактировалось 1 раз.
Станислав
Re: STM32 новичку в ARM что к чему
Я обычно в обработчик кладу BreakPoint и смотрю, остановится там отладчик или нет.
А что там настраивать? нет батарейки - нет бэкапа. А при наличии основного питания - резервная батарейка не нужна, т.е. будет работать как с нею, так и без неё.
А что там настраивать? нет батарейки - нет бэкапа. А при наличии основного питания - резервная батарейка не нужна, т.е. будет работать как с нею, так и без неё.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
У меня почему-то брикпоинт не ставится там..
До этого 10 раз пробовал его туда воткнуть - он меня игнорил. Ставил только кружочек с восклицательным знаком. А теперь поставил.
Какая-то аномалия.
Пойду поем.
Пойду поем.
Станислав
- afz
- Опытный кот
- Сообщения: 744
- Зарегистрирован: Сб дек 22, 2012 08:17:42
- Откуда: Караганда, Казахстан
Re: STM32 новичку в ARM что к чему
Скорее всего, Кейл чего-то там наоптимизировал, из-за чего бряк и не ставился.СКАЗОЧНИК писал(а):У меня почему-то брикпоинт не ставится там..До этого 10 раз пробовал его туда воткнуть - он меня игнорил. Ставил только кружочек с восклицательным знаком. А теперь поставил.
Какая-то аномалия.
Кстати, ходят слухи, что LSE 32768 на этих китайских платках может гнать, поскольку там нужен специальный кварц и конденсаторы 12 пФ, а китайцы, бывает, лепят что попало.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Re: STM32 новичку в ARM что к чему
Брейкпоинт мог не ставиться в тот раз, когда имя обработчика было не правильным. В результате при линковке эта функция была выкинута и дебаггер не мог данное место в исходнике связать со сгенерённым кодом за неимением оного.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: STM32 новичку в ARM что к чему
Ну, то, что у меня здесь налеплено что попало я уже посмотрел. ))) Переделывать ничего не стал. ЮСБ интерфейс на плате я не использую, поэтому там подтягивающий резистор не перепаивал. А конденсаторов для кварцев у меня просто подобных нету, тем более типоразмер элементов там меньше 0505, что также печально . Поэтому забил и включил так, как есть.
Удивительно, но работает.
Добавлено after 5 minutes 9 seconds:
Уже пол дня стоит и считает по кругу. Даже подумал, может часы на ней замутить. ) Но планы немного другие.
Пока еще не добил до конца контроллер встроенных прерываний. Хотя, там все регистры по сути однотипные и их одинаковых много. Все как в портах ввода-вывода, ну подобно. На днях про него все прочитаю.
Информацию глотаю маленькими кусочками. чтобы не перегружать голову, а то не воспринимаю. Задумываюсь о HAL или все же дальше посидеть еще на CMSYS, пока изучаю составные части МК, как запустить, как работают.
Да, процедуру инициализации, которая задает тактирование для МК я полностью разобрал по каждому оператору и законспектировал. Она не идеальна, но решил пользоваться ею.
Удивительно, но работает.
Добавлено after 5 minutes 9 seconds:
Уже пол дня стоит и считает по кругу. Даже подумал, может часы на ней замутить. ) Но планы немного другие.
Пока еще не добил до конца контроллер встроенных прерываний. Хотя, там все регистры по сути однотипные и их одинаковых много. Все как в портах ввода-вывода, ну подобно. На днях про него все прочитаю.
Информацию глотаю маленькими кусочками. чтобы не перегружать голову, а то не воспринимаю. Задумываюсь о HAL или все же дальше посидеть еще на CMSYS, пока изучаю составные части МК, как запустить, как работают.
Да, процедуру инициализации, которая задает тактирование для МК я полностью разобрал по каждому оператору и законспектировал. Она не идеальна, но решил пользоваться ею.
Станислав
Re: STM32 новичку в ARM что к чему
лучше LL, а не HAL. Она менее упорота и куда более компактна.


