STM32 новичку в ARM что к чему
В своем примере настройку FLASH я добавил позже, когда разогнать ядро выше 55МГц не удалось. Нашел,запустил,запомнил. Теперь действительно слежу за всеми используемыми блоками. Опыт так сказать.
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
[uquote="philosoraptor",url="/forum/viewtopic.php?p=3463065#p3463065"]Что очень характерно, персонажи, пытающиеся прокачать свое чсв, ругая hal, cube и т.п, не понимают даже толком, почему использование while(extPin){;} в нормальном коде недопустимо. В связи с чем вряд ли есть смысл объяснять им рациональные и очевидные вещи.[/uquote]
Рациональный наш, ты умудрился на лету переобуться.
Во первых речь была о флагах статуса SPI о не о состояния пина. Это раз.
А два -калокуб и то что ты называшь "HAL", что на самом деле лишь не нужная прослойка а не HAL, ну ни как не рациональны.
WiseLord, наделать глупостей в калокубе, не изучая железо, намного больше шансов...
Рациональный наш, ты умудрился на лету переобуться.
Во первых речь была о флагах статуса SPI о не о состояния пина. Это раз.
А два -калокуб и то что ты называшь "HAL", что на самом деле лишь не нужная прослойка а не HAL, ну ни как не рациональны.
WiseLord, наделать глупостей в калокубе, не изучая железо, намного больше шансов...
- Сообщения: 191
- Зарегистрирован: Вт июн 05, 2018 00:18:01
[uquote="jcxz",url="/forum/viewtopic.php?p=3463054#p3463054"]Flash latency нужно менять при смене частоты, а не источника тактирования. И мне кажется само собой разумеющимся, что при смене какой-то частоты тактирования, нужно просмотреть (и переинитить при необходимости) все части МК, которые тактируются этой частотой. Если ты что-то меняешь, то естественно нужно просмотреть все части, на что это изменяемое влияет.[/uquote]
IMHO не самая продуктивная стратегия. Хотя собственным временем вы конечно вольны распоряжаться как угодно. Я внимательно смотрел код который генерит куб, и прикидывал где понаделал бы ошибок и как надо читать RM чтобы такого не случилось. Получалось, что только учить наизусть.
IMHO не самая продуктивная стратегия. Хотя собственным временем вы конечно вольны распоряжаться как угодно. Я внимательно смотрел код который генерит куб, и прикидывал где понаделал бы ошибок и как надо читать RM чтобы такого не случилось. Получалось, что только учить наизусть.
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="pvit",url="/forum/viewtopic.php?p=3463189#p3463189"]Я внимательно смотрел код который генерит куб, и прикидывал где понаделал бы ошибок и как надо читать RM чтобы такого не случилось. Получалось, что только учить наизусть.[/uquote]
Вы и с кубом "понаделали ошибок". Я вам на них указывал, но похоже, что вы даже не понимаете, о чем речь. Нафиг вам такое программирование, ума не приложу.
Вы и с кубом "понаделали ошибок". Я вам на них указывал, но похоже, что вы даже не понимаете, о чем речь. Нафиг вам такое программирование, ума не приложу.
- Сообщения: 1841
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="pvit",url="/forum/viewtopic.php?p=3463189#p3463189"]IMHO не самая продуктивная стратегия. Хотя собственным временем вы конечно вольны распоряжаться как угодно. Я внимательно смотрел код который генерит куб, и прикидывал где понаделал бы ошибок и как надо читать RM чтобы такого не случилось. Получалось, что только учить наизусть.[/uquote]
Продуктивность ярко видна по форумам: все форумы просто заполнены стонами пользователей всяких калокубов: "нашёл в нете это. прикостылил к себе, что-то понатыкал там и там - не работает!
( перетыкал по-другому - опять не работает!
(( спасите-помогите - куда ещё потыкать?? - неделю уже бьюсь, а никак не получается!
((".
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно.
И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно!
Продуктивность ярко видна по форумам: все форумы просто заполнены стонами пользователей всяких калокубов: "нашёл в нете это. прикостылил к себе, что-то понатыкал там и там - не работает!
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно.
И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно!
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
[uquote="WiseLord",url="/forum/viewtopic.php?p=3463035#p3463035"]P.S. ссылка на goodboard.ru наконец-то открылась. Можно и почитать.[/uquote]
Да бывает форум глючит но не часто, вероятно админ что-то прикручивает.
Да бывает форум глючит но не часто, вероятно админ что-то прикручивает.
- Сообщения: 191
- Зарегистрирован: Вт июн 05, 2018 00:18:01
[uquote="jcxz",url="/forum/viewtopic.php?p=3463212#p3463212"]Продуктивность ярко видна по форумам: все форумы просто заполнены стонами пользователей всяких калокубов: "нашёл в нете это. прикостылил к себе, что-то понатыкал там и там - не работает!
( перетыкал по-другому - опять не работает!
(( спасите-помогите - куда ещё потыкать?? - неделю уже бьюсь, а никак не получается!
((".
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно.
И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно![/uquote]
IMHO вы съезжаете с конкретного примера на разговоры за жизнь. У меня не было проблем с кубом. И изучение его исходников начинать програмирование с чтения RM желания не прибавило. За тех кого вы видели на форумах отвечать не могу, т.к. делюсь собственным опытом.
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно.
И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно![/uquote]
IMHO вы съезжаете с конкретного примера на разговоры за жизнь. У меня не было проблем с кубом. И изучение его исходников начинать програмирование с чтения RM желания не прибавило. За тех кого вы видели на форумах отвечать не могу, т.к. делюсь собственным опытом.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
pvit, мы все здесь наблюдали ваше "не было проблем" вы кого сейчас лечите?
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Посмотрел что там сейчас куб генерит:
Первым делом LATENCY:
внутри функции работа с регистром напрямую:
и т.д.
imho как пример на подсмотреть пойдет
Первым делом 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 как пример на подсмотреть пойдет
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="oleg110592",url="/forum/viewtopic.php?p=3463236#p3463236"][/uquote]Это пять! Они сами сомневаются что смогли изменить один регистр?
Код: Выделить всё
void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);
if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1)
{
Error_Handler();
}
....Конечно сомневаются. Потому что MODIFY_REG изменяет лишь один бит регистра.
Или Вы будете утверждать, что если написать var |= 0x01, то в результате в var будет именно 0x01?
*поправка - не один бит, а сколько задано маской. Так что, возможно, это и лишнее.
Или Вы будете утверждать, что если написать var |= 0x01, то в результате в var будет именно 0x01?
*поправка - не один бит, а сколько задано маской. Так что, возможно, это и лишнее.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
WiseLord, правильно что сомневаетесь , это начало на пути к просветлению.
- Сообщения: 225
- Зарегистрирован: Сб янв 14, 2012 22:53:50
[uquote="WiseLord",url="/forum/viewtopic.php?p=3463327#p3463327"]если написать var |= 0x01, то в результате в var будет именно 0x01?[/uquote]
Едва ли товарищ выше, к примеру, умеет эндить и орить, так что |= ему ничего не скажет. А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003, совершенно бесполезно.
Едва ли товарищ выше, к примеру, умеет эндить и орить, так что |= ему ничего не скажет. А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003, совершенно бесполезно.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
philosoraptor, ты только что обгадился по полной и все из-за абсолютной невнимательности...
Есть стандартные файлы кода запуска. В файлах есть комменты обьясняющие че по чем зачем и почему. О чем базар?
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 3386
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Разве не одно и тоже?philosoraptor писал(а):А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003
ну как бы для 32-битной платформы не одно...Мурик писал(а):Разве не одно и тоже?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 3386
- Зарегистрирован: Пн окт 11, 2010 19:00:08
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="VladislavS",url="/forum/viewtopic.php?p=3463268#p3463268"]Это пять! Они сами сомневаются что смогли изменить один регистр?[/uquote]
Это писали особо недоверчивые индусы. Сомневаться им приходится во всем, включая даже то, что регистры непосредственно после подачи питания находятся в их дефолтных состояниях.
Вот кусок стартапа, функции, которая вызывается до main():
HSION там уже в единице, но индусы считают, что лишний раз не повредит. Ну а там где один лишний раз, то и другой уже лишним точно не будет:
Все вышеперечисленные действия инитят регистры в их дефолтовые значения, которые и до этого те же самые значения имели. И как можно видеть, LL_RCC_HSI_Enable() пытается взвести изначально взведенный бит HSION уже во второй раз.
Это писали особо недоверчивые индусы. Сомневаться им приходится во всем, включая даже то, что регистры непосредственно после подачи питания находятся в их дефолтных состояниях.
Вот кусок стартапа, функции, которая вызывается до main():
Код: Выделить всё
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state ------------*/
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001U;
Код: Выделить всё
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)
{
}
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Вообще, можно придумать ситуации когда прошивка стартует с недефолтными регистрами.


