-
- По поводу споров ODR и BSRR: помню, слышал, что если при записи в ODR одна из ног имеет прерывание EXTI, то может отработать. Слышал не проверял. Может кто и поправит. - _Constantin24(26.12.2019 07:47)
- Вопрос о прерывании EXTI не стоит, но если оно сработает в момент программного изменения состояния, то это, считаю, было бы вполне правильно, т.к. прерывание EXTI, по идее, не должно зависеть от причины, вызвавшей импульс. - Ксения(26.12.2019 17:50)
- я о том, что вы ловите прерывание по PA1, хотя дергаете только PA0. - _Constantin24(27.12.2019 13:39)
- Вопрос о прерывании EXTI не стоит, но если оно сработает в момент программного изменения состояния, то это, считаю, было бы вполне правильно, т.к. прерывание EXTI, по идее, не должно зависеть от причины, вызвавшей импульс. - Ксения(26.12.2019 17:50)
- Вопрос понятен, отвечаю по пунктам: evgeniy1294(1549 знак., 24.12.2019 21:10 - 21:16)
- По первому пункту есть возражение. Процитированное относится не ко всем контроллерам. Можно некисло погореть. Для STM32F10x сказано несколько другое: LightElf(182 знак., 25.12.2019 12:01 - 12:04)
- Да, есть такое. У Ксении, на сколько помню, F4хх, я уже отказался от сотой серии в пользу G0. - evgeniy1294(25.12.2019 12:07)
- Ну это да, F10x отмирают постепенно, уж очень комом вышел этот первый блин. С другой стороны это объясняет привычку не трогать ODR. Ну и с последней стороны - мне нечасто приходится выводить параллельный байт в GPIO. Чаще или битики ковырять, или LightElf(17 знак., 25.12.2019 12:43)
- Первый мой проект действительно был на STM32F407, но второй уже на STM32F103. Думала, что дауншифтинг пройдет легко, но не так-то было... - Ксения(25.12.2019 12:39)
- Да, после F0/F4 переползать на F103 - весьма уныло. Там жеж грабли разложены в три слоя. - LightElf(25.12.2019 13:06)
- Да, есть такое. У Ксении, на сколько помню, F4хх, я уже отказался от сотой серии в пользу G0. - evgeniy1294(25.12.2019 12:07)
- Правильно ли я вас поняла, что выставить 8 младших бит в порту можно так: Ксения(436 знак., 24.12.2019 22:03)
- 1) "Правильно ли я вас поняла, что выставить 8 младших бит в порту можно так" - да, все верно, так как установка имеет приоритет над сбросом. evgeniy1294(932 знак., 25.12.2019 08:33)
- Уж проверьте пожалуйста, куда делась моя подтяжка :), информация такая: Ксения(1074 знак., 25.12.2019 21:10 - 21:13)
- Также можно залезть в HAL_GPIO_Init(…) , где видно игнорирование GPIO_InitStruct.Pull = GPIO_PULLUP; для выхода. Раньше кстати куб не генерировал pullup. Унифицировали) - _Constantin24(26.12.2019 08:12)
- Смотрим референс Figure 16. Output configuration. Подтяжки на выход нет, только вход. - _Constantin24(26.12.2019 07:41)
- Тогда отчего происходит это - мой пост "Странность нарастает"? Т.е. в чем причина того, что порт, сконфигурованный на ВХОД и имеющий подтяжку к плюсу питания, внезапно теряет свой высокий уровень, если через ODR или BSRR записать нулик? Ксения(209 знак., 26.12.2019 18:16, ссылка, картинка)
- Направление подтяжки определяется битом в регистре ODR. В отличие от STM32F4. - SciFi(26.12.2019 18:34)
- Тогда отчего происходит это - мой пост "Странность нарастает"? Т.е. в чем причина того, что порт, сконфигурованный на ВХОД и имеющий подтяжку к плюсу питания, внезапно теряет свой высокий уровень, если через ODR или BSRR записать нулик? Ксения(209 знак., 26.12.2019 18:16, ссылка, картинка)
- Нет никакой странности, у f103 нет подтяжки выхода. Подтяжка врубается только для входа. - evgeniy1294(26.12.2019 00:26 - 00:29)
- Спасибо вам за успешное расследование :), а то уж я и в errata рылась, но этого случая не нашла. В этой связи, не известен ли вам аналог F103, совместимый по цоколевке (48 ног), но чтобы подтяжка на вывод у него работала? - Ксения(26.12.2019 16:50)
- STM32F042C6 например - LightElf(26.12.2019 17:11)
- Cortex-M0 не хочу, мне бы что-нибудь из M3/M4. - Ксения(26.12.2019 17:21)
- На первый взгляд F303C встанет вместо F103C. Сам не ставил, зуб давать не буду. - LightElf(26.12.2019 20:00)
- Встанет! Большое спасибо за наводку! - Ксения(26.12.2019 20:15, картинка)
- Это-то да, вопрос в задействованной периферии. Проверьте, что всякие там I2c/UART/ADC/что там у вас используется, попадают на те же ноги. - LightElf(26.12.2019 20:18)
- Им моей практики F1-F2-F4 периферия полностью совпадает. разница только по gnd. - Aleksey_75(26.12.2019 20:36)
- Если сказать, что F1->F2->F3 - то соглашусь, а вот назад - сильно не всегда. У F1 возможности ремапа весьма так себе. - LightElf(26.12.2019 21:41)
- ну у меня правило, закладывать самое минимальное с возможность роста, если что-то пойдет не так ) - Aleksey_75(26.12.2019 21:43)
- Ну вот я давно переполз с F1 на F0. Но потом как-то попытался откатить назад, а там опаньки. - LightElf(26.12.2019 22:07)
- про F0 ничего не скажу, мне F0 не подходит по периферии - Aleksey_75(26.12.2019 22:12)
- Ну вот я давно переполз с F1 на F0. Но потом как-то попытался откатить назад, а там опаньки. - LightElf(26.12.2019 22:07)
- ну у меня правило, закладывать самое минимальное с возможность роста, если что-то пойдет не так ) - Aleksey_75(26.12.2019 21:43)
- Если сказать, что F1->F2->F3 - то соглашусь, а вот назад - сильно не всегда. У F1 возможности ремапа весьма так себе. - LightElf(26.12.2019 21:41)
- Проверила - альтернативные функции тоже совпадают. Одно только плохо - мне самой не перепаять STM32F103 на STM32F303. - Ксения(26.12.2019 20:32)
- Делов всего то - пару раз поднести фен :) - Гудвин(26.12.2019 20:35)
- даже фен не сильно нужен, иголка и обычный паяльник для выпайки, про запайку даже говорить не буду - Aleksey_75(26.12.2019 20:39)
- Если никого под рукой нет - любой ремонтник телефонов вам легко их перекинет. - LightElf(26.12.2019 20:34)
- Делов всего то - пару раз поднести фен :) - Гудвин(26.12.2019 20:35)
- Им моей практики F1-F2-F4 периферия полностью совпадает. разница только по gnd. - Aleksey_75(26.12.2019 20:36)
- Это-то да, вопрос в задействованной периферии. Проверьте, что всякие там I2c/UART/ADC/что там у вас используется, попадают на те же ноги. - LightElf(26.12.2019 20:18)
- Встанет! Большое спасибо за наводку! - Ксения(26.12.2019 20:15, картинка)
- На первый взгляд F303C встанет вместо F103C. Сам не ставил, зуб давать не буду. - LightElf(26.12.2019 20:00)
- Cortex-M0 не хочу, мне бы что-нибудь из M3/M4. - Ксения(26.12.2019 17:21)
- STM32F042C6 например - LightElf(26.12.2019 17:11)
- Спасибо вам за успешное расследование :), а то уж я и в errata рылась, но этого случая не нашла. В этой связи, не известен ли вам аналог F103, совместимый по цоколевке (48 ног), но чтобы подтяжка на вывод у него работала? - Ксения(26.12.2019 16:50)
- Странность нарастает: Ксения(943 знак., 25.12.2019 22:27 - 22:31)
- эээ! у F1xx typedef gpio отличается от F2..F4 )) как впрочем и регистры портов Aleksey_75(269 знак., 25.12.2019 21:28 - 21:31)
- Файл: \STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h Ксения(2365 знак., 25.12.2019 21:45)
- По моему индусы чего-то там на@вертили! А можно саму функцию инита пина - Aleksey_75(25.12.2019 21:53)
- Так было в старом CubeMX, а у меня последний - FW.F1.1.8.0. Да и даже если бы я была такая дебилка, то компилятор не смог бы скомпилировать код с неправильно назваными элементами структуры. - Ксения(25.12.2019 21:39)
- я в ваших кубах не разбираюсь, код из SPL) - Aleksey_75(25.12.2019 21:45)
- А я в SPL не разбираюсь :) - Ксения(25.12.2019 21:49)
- я в ваших кубах не разбираюсь, код из SPL) - Aleksey_75(25.12.2019 21:45)
- Файл: \STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h Ксения(2365 знак., 25.12.2019 21:45)
- Уж проверьте пожалуйста, куда делась моя подтяжка :), информация такая: Ксения(1074 знак., 25.12.2019 21:10 - 21:13)
- Для виртуозного управления портами придуман Периферийный Интерфейсный Контроллер. Всё остальное - жалкие поделки. - Крок(24.12.2019 23:23)
- 1) "Правильно ли я вас поняла, что выставить 8 младших бит в порту можно так" - да, все верно, так как установка имеет приоритет над сбросом. evgeniy1294(932 знак., 25.12.2019 08:33)
- По первому пункту есть возражение. Процитированное относится не ко всем контроллерам. Можно некисло погореть. Для STM32F10x сказано несколько другое: LightElf(182 знак., 25.12.2019 12:01 - 12:04)
- У STM 32 Размер порта 16 бит. То есть размер байта в этом случае 16 бит ;-) - misyachniy(24.12.2019 19:55)
- Насколько я смутно помню, в ODR нельзя писать байтами - только 32-битными словами. Потому и приходится извращаться с чтением-модификацией-записью. А использовать BSRR для записи сразу и нулей и единиц вполне можно, делаю так регулярно. - LightElf(24.12.2019 18:15)
- мой любимый HAL позволяет. :-) Лагунов(166 знак., 24.12.2019 19:06)
- рукалицо... - SciFi(24.12.2019 19:08)
- кстати, любопытно, но до сих пор не знаю первоисточника данного мема. Откуда? - Лагунов(24.12.2019 20:40)
- Star Trek The Next Generation, Season 4 Episode 21, The Drumhead, 1991. - SciFi(24.12.2019 20:51, youtube)
- кстати, любопытно, но до сих пор не знаю первоисточника данного мема. Откуда? - Лагунов(24.12.2019 20:40)
- рукалицо... - SciFi(24.12.2019 19:08)
- мой любимый HAL позволяет. :-) Лагунов(166 знак., 24.12.2019 19:06)
- По вопросу 1b - ну гляньте исходники, ну что вы их слушаете?! __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) { WRITE_REG(GPIOx->ODR, PortValue); } - VLLV(24.12.2019 17:38)
- Кстати LL генерит через ODR. А HAL через BSRR. Последнее считаю более верным. - _Constantin24(26.12.2019 08:14)
- Этот дефайн - эквивалент прямой записи в ODR. LL-дефайны я специально не рассматривала (чтобы не вызвать путаницы у тех, кто с ними не знаком), а вела разговор про регистры. - Ксения(24.12.2019 17:42)
- Ничего не понимаю. Вы пишете - "почему недопустима прямая запись в регистр?" Я отвечаю - "Допустима, предусмотрена в CubeMX, и может использоваться программистом". А макросы это, или не макросы - какая разница? Да, действительно, редко когда VLLV(266 знак., 24.12.2019 17:53)
- Если что-то знаете про параллельный вывод, реализованный на STM32, тоже расскажите. Например, если нужно часто выводить сразу 8-ю битами, или даже с помощью DMA, - это возможно? - Ксения(24.12.2019 21:41)
- Я сказала не "недопустима", а "нельзя". В том же смысле, как нельзя ковырять в носу :), т.е. не в смысле, что палец в нос невозможно засунуть, а в смысле, что не рекомендуется этого делать. Вот и в ODR не рекомендуют что-либо писать, хотя Ксения(126 знак., 24.12.2019 18:17 - 18:19)
- Если палец в нос не влазит, то я делаю копию порта в ОЗУ и манипулирую копией, а затем вывожу в порта. Обычно через макросы. - misyachniy(24.12.2019 19:57)
- Ничего не понимаю. Вы пишете - "почему недопустима прямая запись в регистр?" Я отвечаю - "Допустима, предусмотрена в CubeMX, и может использоваться программистом". А макросы это, или не макросы - какая разница? Да, действительно, редко когда VLLV(266 знак., 24.12.2019 17:53)
- По поводу споров ODR и BSRR: помню, слышал, что если при записи в ODR одна из ног имеет прерывание EXTI, то может отработать. Слышал не проверял. Может кто и поправит. - _Constantin24(26.12.2019 07:47)