jcxz 217 1 июня, 2021 Опубликовано 1 июня, 2021 · Жалоба 3 часа назад, Darth Vader сказал: Смысл был сделать универсальный код, чтобы корректно работал в том числе и на М0/М0+/М1, и не приводил к хардфолту от невыровненного доступа к данным. Как я уже написал: использование указателя на упакованные данные заставляет компилятор генерить код, правильно работающий как на CPU с поддержкой невыравненного доступа, так и без оной. И без нагромождения тяжеловесных конструкций с memcpy(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 2 июня, 2021 Опубликовано 2 июня, 2021 · Жалоба 20 часов назад, jcxz сказал: 31.05.2021 в 20:49, Darth Vader сказал: while(FLASH->SR & FLASH_SR_BSY1); в корректно написанных программах лучше не делать. Разве что в каком-нить учебном коде (примерах) так сойдёт. С этим что не так? Как надо правильно мониторить состояние флага события в регистре? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 160 2 июня, 2021 Опубликовано 2 июня, 2021 · Жалоба 4 часа назад, Darth Vader сказал: С этим что не так? Как надо правильно мониторить состояние флага события в регистре? Мониторите, конечно, правильно, с точки зрения логики. Однако, а) процессы записи и (особенно) стирания далеко не быстрые, пропускаете кучу событий; а у меня бы еще внешний WDT сбросил систему, например; б) бесконечные циклы ожидания при поллинге флагов периферии крайне желательно заменять циклами с тем или иным механизмом таймаутов; в) по причинам, описанным в п. а) и б) я (у себя) работаю по прерываниям, так проще обслуживать состояния ошибок, и за BSY не надо следить; г) но вообще, при работе с IAP Flash-памяти, я бы рекомендовал запускаться из ОЗУ. Хотя, может, в каких-то случаях это и лишнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 217 2 июня, 2021 Опубликовано 2 июня, 2021 · Жалоба 4 часа назад, Darth Vader сказал: С этим что не так? Как надо правильно мониторить состояние флага события в регистре? Пустая трата процессорного времени в цикле ожидания, в то время как это время можно было бы отдать менее приоритетным задачам. Это стиль суперлупа, от которого давно следует уйти в серьёзных программах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 июня, 2021 Опубликовано 2 июня, 2021 · Жалоба 4 hours ago, Darth Vader said: С этим что не так? Как надо правильно мониторить состояние флага события в регистре? Используйте аппаратные прерывания и событийную модель ПО, например ОСРВ с её межпроцессными средствами взаимодействия (мьютексы, семафоры, сигналы и т.п.). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться