-
- в чем проблема? HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);//Configure the Systick interrupt time - IBAH(31.07.2019 14:14)
- Прошелся поиском по "кубическим" сырцам своего проекта - похоже, усё завязано на глобальную переменную uwTickFreq. Что бы её (и частоту systick) изменить, нужно вызвать функцию HAL_SetTickFreq(HAL_TickFreqTypeDef Freq) Проблема в том, что аргумент Сидоргек(139 знак., 30.07.2019 18:04 - 18:06)
- Думаю, они это специально делают, из вредности. - SciFi(30.07.2019 18:07)
- Что "это" Куб ? - Сидоргек(30.07.2019 18:09)
- вот - Крок(31.07.2019 11:00, ссылка)
- ах-ха-ха, «Изоляция, паника, ужас... есть ли выход...» в тему ))) - Aleksey_75(31.07.2019 11:23)
- Шутки шутками, а ведь это потенциальный бизнес: за денежку выводить из дебрей вляпавшихся в куб. - SciFi(31.07.2019 11:26)
- Вводить , выводить и проводить. - PlainUser(31.07.2019 11:42)
- Скрипачу бы понравилось - Nikolay_Po(31.07.2019 13:54)
- Вводить , выводить и проводить. - PlainUser(31.07.2019 11:42)
- Шутки шутками, а ведь это потенциальный бизнес: за денежку выводить из дебрей вляпавшихся в куб. - SciFi(31.07.2019 11:26)
- ах-ха-ха, «Изоляция, паника, ужас... есть ли выход...» в тему ))) - Aleksey_75(31.07.2019 11:23)
- вот - Крок(31.07.2019 11:00, ссылка)
- Что "это" Куб ? - Сидоргек(30.07.2019 18:09)
- Думаю, они это специально делают, из вредности. - SciFi(30.07.2019 18:07)
- А в чём проблема после кубического инита вызвать ещё раз HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/СКОКА_НАДО); ? - Молодой коллега(29.07.2019 22:55)
- Спасибо, уже думал об этом, кроет напрочь. Но теперь в самом деле стал бояться последствий ломки систика. Сделаю временную базу на другом таймере, по крайней мере в приложении, будет спокойнее. - VLLV(30.07.2019 08:08)
- Патамушта кубический инит может запомнить частоту, а потому козу устроить. - SciFi(29.07.2019 22:58)
- Может запомнить...Это типа памяти воды - ПАМЯТЬ КУБА... Страшное дело. - Apтём(30.07.2019 11:11)
- Ну а где там куб частоту помнит, во встроенных дэлэях и полингах разных, ну так это надо иметь ввиду, можно подправить ручками что-то. Для конструкции выходного дня вполне себе подход не? - Молодой коллега(29.07.2019 23:07)
Плашек 3/8 нет, а трамвай собираются пускать.Понаставят всякой кубической фигни, а потом едрятся с ней до потери пульса - LightElf(29.07.2019 23:16)- Имано. За это время можно уже весь мануал зазубрить. 3 раза. - SciFi(30.07.2019 10:45)
- Во мне бы мог развиться комплекс неполноценности, но поздно ;) - VLLV(30.07.2019 11:13)
- Развивайте комплекс полноценности, переходите на темную сторону силы. - LightElf(30.07.2019 15:42)
- Во мне бы мог развиться комплекс неполноценности, но поздно ;) - VLLV(30.07.2019 11:13)
- Имано. За это время можно уже весь мануал зазубрить. 3 раза. - SciFi(30.07.2019 10:45)
- Да заведите себе другой таймер, если 1 КГц вас не устраивает. Зачем же системный таймер ломать? - Ксения(29.07.2019 18:54)
- Нет, Ксения, вот Вы мне объясните, зачем такой системный таймер, который не подходит для использования в системе?! Да RM написано, что там 1 кГц должен быть! ARMовцы офигели, хуже Сталина. Для чего это в системе без RTOS? - VLLV(29.07.2019 19:55)
- Я полагаю, что он нужен затем, чтобы функция HAL_Delay() работала - задержка в единицах мс, которая востребована во многих местах HAL и даже в поддержке USB нижнего уровня (stm32f4xx_ll_usb.c). - Ксения(29.07.2019 20:01)
- 1. В RM на контроллер написано 1кГц! Вряд ли STшники сами придумали - все идет от ARM. 2. Если я не использую HAL, а использую LL без USB? Масса надуманных немотивированнах зависимостей. VLLV(144 знак., 29.07.2019 21:43)
- Архитектура ARM здесь виновата только тем, что там (в отличите от AVR) нельзя делать калиброванные временные задержки с помощью цикла холостых команд, а всегда приходится использовать для этой цели таймер. Особенно это актуально при поддержке Ксения(411 знак., 29.07.2019 22:20)
- Кто тот гуру, который сказал, что 1 мс в самый раз? Ну мне 100 мкс в самый раз :) - VLLV(29.07.2019 22:31)
- Ну так запрограммируйте Systick на 100мкс, не пойму в чем проблема-то? - LightElf(29.07.2019 23:11)
- да кто вам такое сказал ? используйте счетчик тактов DWT будет щастье! Вот SciFi пример вам дал ) - Aleksey_75(29.07.2019 22:24, ссылка)
- Проблема в том, что HAL из CubeMX использует системный таймер, а не DWT. Для своих целей DWT использовать можно, однако это решение эквивалентно тому, чтобы системный таймер не трогать, а пользоваться своим таймером (DWT или обычным - не Ксения(324 знак., 30.07.2019 00:00)
- "калиброванные временные задержки с помощью цикла холостых команд" - DWT вам в помощь, а систик оставьте под HAL если так хочется. Aleksey_75(148 знак., 30.07.2019 00:14 - 00:19)
- В файле stm32f4xx_ll_usb.c функция HAL_Delay() вызывается 6 раз. Например: Ксения(696 знак., 30.07.2019 00:35)
- да сейчас глянул stm32l4xx_hal.c там галимый индусокод заточенный на 1ms, функцию HAL_Delay() поправить чтоб правильно считала в зависимости от настроек систика. Aleksey_75(96 знак., 30.07.2019 00:49)
- Кстати , HAL_Delay() объявлена как __weak , так что пишите свою HAL_Delay() и никакие либы править не придется - Aleksey_75(30.07.2019 00:54)
- да сейчас глянул stm32l4xx_hal.c там галимый индусокод заточенный на 1ms, функцию HAL_Delay() поправить чтоб правильно считала в зависимости от настроек систика. Aleksey_75(96 знак., 30.07.2019 00:49)
- В файле stm32f4xx_ll_usb.c функция HAL_Delay() вызывается 6 раз. Например: Ксения(696 знак., 30.07.2019 00:35)
- "калиброванные временные задержки с помощью цикла холостых команд" - DWT вам в помощь, а систик оставьте под HAL если так хочется. Aleksey_75(148 знак., 30.07.2019 00:14 - 00:19)
- Проблема в том, что HAL из CubeMX использует системный таймер, а не DWT. Для своих целей DWT использовать можно, однако это решение эквивалентно тому, чтобы системный таймер не трогать, а пользоваться своим таймером (DWT или обычным - не Ксения(324 знак., 30.07.2019 00:00)
- Кто тот гуру, который сказал, что 1 мс в самый раз? Ну мне 100 мкс в самый раз :) - VLLV(29.07.2019 22:31)
- В документации ДЛЯ ЛЮДЕЙ это было бы во первых строках. А там, видимо, для адуринщиков. - SciFi(29.07.2019 21:50)
- Я рискую, но признаюсь, что далеко не всегда читаю документацию. Ебта, что нового могли изобрести человечество после 8259? NVIC? - хоть какой-то возврат к здравому смыслу после одноуровневых прерываний убогих AVR и прочих MSP430. - VLLV(29.07.2019 22:14)
- Но есть нюансы. Впрочем, как обычно. - SciFi(29.07.2019 22:33)
- Я рискую, но признаюсь, что далеко не всегда читаю документацию. Ебта, что нового могли изобрести человечество после 8259? NVIC? - хоть какой-то возврат к здравому смыслу после одноуровневых прерываний убогих AVR и прочих MSP430. - VLLV(29.07.2019 22:14)
- Архитектура ARM здесь виновата только тем, что там (в отличите от AVR) нельзя делать калиброванные временные задержки с помощью цикла холостых команд, а всегда приходится использовать для этой цели таймер. Особенно это актуально при поддержке Ксения(411 знак., 29.07.2019 22:20)
- 1. В RM на контроллер написано 1кГц! Вряд ли STшники сами придумали - все идет от ARM. 2. Если я не использую HAL, а использую LL без USB? Масса надуманных немотивированнах зависимостей. VLLV(144 знак., 29.07.2019 21:43)
- Я полагаю, что он нужен затем, чтобы функция HAL_Delay() работала - задержка в единицах мс, которая востребована во многих местах HAL и даже в поддержке USB нижнего уровня (stm32f4xx_ll_usb.c). - Ксения(29.07.2019 20:01)
- у меня давно везде есть и systick и обычный таймер на 100/200 мксек. Прекрасно дружат. :-) - Лагунов(29.07.2019 19:42)
- У меня повсеместно вот так, чего всем желаю: SciFi(225 знак., 29.07.2019 19:46)
- Нет, Ксения, вот Вы мне объясните, зачем такой системный таймер, который не подходит для использования в системе?! Да RM написано, что там 1 кГц должен быть! ARMовцы офигели, хуже Сталина. Для чего это в системе без RTOS? - VLLV(29.07.2019 19:55)
- Вы можете это сделать только вручную через HAL_SYSTICK_Config(), обманув библиотеку. При этом все может посыпаться. - evgeniy1294(29.07.2019 08:10)
- На вкладке Config Parameters компонента FREERTOS можно редактировать дефайны из FreeRTOSConfig.h В том чиcле - TICK_RATE_HZ. Что из этого получится - именно что _HZ :) но факт остаётся фактом - частоту тиканья систаймера можно (или нет?) крутить Сидоргек(21 знак., 29.07.2019 10:28)
- Я операционку не использую, а значит и крутить нельзя. Хотя я и куб не использую. - evgeniy1294(29.07.2019 13:21)
- Спасибо. Может, это и к лучшему. Все равно SysTick слабо подходит для базового таймера - т.к. у него слишком высокий приоритет. Нужно создавать свой. - VLLV(29.07.2019 08:45)
- Низко точную по времени асинхронщину на нём удобно делать. Вот нужно мне датчик опрашивать примерно раз в 25 мс, будет это ровно 25 или на пару мс больше роли не играет. - Evgeniy1294(29.07.2019 09:46)
- Если главный цикл шустро крутится, то прямо в нём можно опрашивать, используя DWT cycle counter. - SciFi(29.07.2019 13:33)
- "у него слишком высокий приоритет" с какой радости ? приоритет прерывания задается какой нужен. ЗЫ вообще все оси используют systick в качестве базового таймера Aleksey_75(281 знак., 29.07.2019 08:48 - 08:52)
- Пардон. Точно, это у Freescale SysTick входит в прерывания ядра. - VLLV(29.07.2019 08:59)
- ??? Фрискалики изобрели какой-то свой особенный систик? Он всю жизнь был частью NVIC, и приоритет там всегда можно настраивать, ЕМНИП. - SciFi(29.07.2019 09:29)
- картинко VLLV(29.07.2019 10:15)
- Это все NVIC - evgeniy1294(29.07.2019 12:43)
- Хоть горшком назови. Просто смутил намёк на то, что у фрискаликов как-то по-особому. - SciFi(29.07.2019 12:48, ссылка)
- Это все NVIC - evgeniy1294(29.07.2019 12:43)
- NVIC_SetPriority() работает и для систика, однако его нельзя вызвать программно. Это его единственное отличие от обычных прерываний. - Evgeniy1294(29.07.2019 09:48)
- картинко VLLV(29.07.2019 10:15)
- ??? Фрискалики изобрели какой-то свой особенный систик? Он всю жизнь был частью NVIC, и приоритет там всегда можно настраивать, ЕМНИП. - SciFi(29.07.2019 09:29)
- Пардон. Точно, это у Freescale SysTick входит в прерывания ядра. - VLLV(29.07.2019 08:59)
- Низко точную по времени асинхронщину на нём удобно делать. Вот нужно мне датчик опрашивать примерно раз в 25 мс, будет это ровно 25 или на пару мс больше роли не играет. - Evgeniy1294(29.07.2019 09:46)
- На вкладке Config Parameters компонента FREERTOS можно редактировать дефайны из FreeRTOSConfig.h В том чиcле - TICK_RATE_HZ. Что из этого получится - именно что _HZ :) но факт остаётся фактом - частоту тиканья систаймера можно (или нет?) крутить Сидоргек(21 знак., 29.07.2019 10:28)