Страница 238 из 446
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 15:28:10
pvit
[uquote="jcxz",url="/forum/viewtopic.php?p=3463212#p3463212"]Продуктивность ярко видна по форумам: все форумы просто заполнены стонами пользователей всяких калокубов: "нашёл в нете это. прикостылил к себе, что-то понатыкал там и там - не работает!

( перетыкал по-другому - опять не работает!

(( спасите-помогите - куда ещё потыкать?? - неделю уже бьюсь, а никак не получается!

((".
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно.
И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно![/uquote]
IMHO вы съезжаете с конкретного примера на разговоры за жизнь. У меня не было проблем с кубом. И изучение его исходников начинать програмирование с чтения RM желания не прибавило. За тех кого вы видели на форумах отвечать не могу, т.к. делюсь собственным опытом.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 15:37:01
dosikus
pvit, мы все здесь наблюдали ваше "не было проблем" вы кого сейчас лечите?
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 15:41:46
oleg110592
Посмотрел что там сейчас куб генерит:
Первым делом LATENCY:
Код: Выделить всё
void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);
if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1)
{
Error_Handler();
}
....
внутри функции работа с регистром напрямую:
Код: Выделить всё
__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
{
MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
}
и т.д.
imho как пример на подсмотреть пойдет
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 16:53:57
VladislavS
[uquote="oleg110592",url="/forum/viewtopic.php?p=3463236#p3463236"]
Код: Выделить всё
void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);
if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1)
{
Error_Handler();
}
....
[/uquote]Это пять! Они сами сомневаются что смогли изменить один регистр?
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 18:30:52
WiseLord
Конечно сомневаются. Потому что MODIFY_REG изменяет лишь один бит регистра.
Или Вы будете утверждать, что если написать var |= 0x01, то в результате в var будет именно 0x01?
*поправка - не один бит, а сколько задано маской. Так что, возможно, это и лишнее.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 19:37:29
dosikus
WiseLord, правильно что сомневаетесь , это начало на пути к просветлению.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 20:03:05
philosoraptor
[uquote="WiseLord",url="/forum/viewtopic.php?p=3463327#p3463327"]если написать var |= 0x01, то в результате в var будет именно 0x01?[/uquote]
Едва ли товарищ выше, к примеру, умеет эндить и орить, так что |= ему ничего не скажет. А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003, совершенно бесполезно.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 20:13:01
dosikus
philosoraptor, ты только что обгадился по полной и все из-за абсолютной невнимательности...
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 20:38:09
Oxford
Есть стандартные файлы кода запуска. В файлах есть комменты обьясняющие че по чем зачем и почему. О чем базар?
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:10:25
Мурик
philosoraptor писал(а):А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003
Разве не одно и тоже?
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:19:36
ARV
Мурик писал(а):Разве не одно и тоже?
ну как бы для 32-битной платформы не одно...
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:27:29
Мурик
Тип переменных нам неизвестен. Может он uint16_t.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:36:51
a5021
[uquote="VladislavS",url="/forum/viewtopic.php?p=3463268#p3463268"]Это пять! Они сами сомневаются что смогли изменить один регистр?[/uquote]
Это писали особо недоверчивые индусы. Сомневаться им приходится во всем, включая даже то, что регистры непосредственно после подачи питания находятся в их дефолтных состояниях.
Вот кусок стартапа, функции, которая вызывается до main():
Код: Выделить всё
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state ------------*/
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001U;
HSION там уже в единице, но индусы считают, что лишний раз не повредит. Ну а там где один лишний раз, то и другой уже лишним точно не будет:
Код: Выделить всё
void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_0);
if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_0)
{
Error_Handler();
}
LL_RCC_HSI_Enable();
/* Wait till HSI is ready */
while(LL_RCC_HSI_IsReady() != 1)
{
}
LL_RCC_HSI_SetCalibTrimming(16);
LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSI);
/* Wait till System clock is ready */
while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
{
}
Все вышеперечисленные действия инитят регистры в их дефолтовые значения, которые и до этого те же самые значения имели. И как можно видеть, LL_RCC_HSI_Enable() пытается взвести изначально взведенный бит HSION уже во второй раз.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:54:49
VladislavS
Вообще, можно придумать ситуации когда прошивка стартует с недефолтными регистрами.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 21:58:01
a5021
Например?
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 23:00:34
Myp3ik
Например управление передается из бутлодера.
Re: STM32 новичку в ARM что к чему
Добавлено: Вс сен 23, 2018 23:54:09
a5021
Если основная прошивка стартует с перекрученными черти как регистрами бутлоадером, то это плохой, негодный бутлоадер. Но даже в этом крайнем случае очень сложно объяснить необходимость устанавливать бит HSION дважды подряд.
Re: STM32 новичку в ARM что к чему
Добавлено: Пн сен 24, 2018 05:41:49
VladislavS
Результат работы процедуры инициализации не должен зависеть от предсостояния. Ошибочное, кривое или сбойное оно было - код должен работать. Вот как-то так.
Re: STM32 новичку в ARM что к чему
Добавлено: Пн сен 24, 2018 07:26:11
philosoraptor
[uquote="Мурик",url="/forum/viewtopic.php?p=3463445#p3463445"]
philosoraptor писал(а):А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003
Разве не одно и тоже?[/uquote]
А вы попробуйте сделать и так и эдак, и проверьте результат.
Добавлено after 8 minutes 33 seconds:
[uquote="a5021",url="/forum/viewtopic.php?p=3463460#p3463460"]
[/uquote]
Вот же он, ярчайший пример быдлокодинга и незнания азов. Сферический в вакууме. Битмаски? Не, не слыхали. И ведь индусы искренне верят, что приведение типов и/или добавление магического U заставят компайлер считать нули перед единицей.
Re: STM32 новичку в ARM что к чему
Добавлено: Пн сен 24, 2018 09:01:31
a5021
[uquote="VladislavS",url="/forum/viewtopic.php?p=3463598#p3463598"]Результат работы процедуры инициализации не должен зависеть от предсостояния. Ошибочное, кривое или сбойное оно было - код должен работать. Вот как-то так.[/uquote]
Не, "как-то так" не пойдет. Фантазмы должны быть ошеломительными, чтобы пресекать всякие вопросы и оправдывать любую белиберду.
Типичный сценарий разработки всегда включает появление из неоткуда кривейшего и горбатейшего загрузчика неизвестных свойств, чью врожденную убогость блестяще исправляет гениальнейший код из под индусов. Ограниченной дееспособности пользователь куба, страдая когнитивными расстройствами всех видов, не в состоянии понять ни байта ни в чем и только неизвестный индийский гений обширно подстелил соломки во всех темных уголках автоматически генерируемого кода, чтобы несчастный не убился насмерть в первую же секунду.
Ага. Все так обычно и бывает.