Я на гитхабе, в ЖЖ
STM32 новичку в ARM что к чему
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
VladislavS, вот если бы они эту функцию хотя бы как TRUE_INLINE пометили, или макросом бы сделали…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Реклама
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
И что, я это х должен постоянно обновлять?, да на кой х оно мне сдалось.VladislavS писал(а):Где же вы это старьё берёте?
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
VladislavS, макрос для
как бы, процентов 99, что будет заинлайнено.
Код: Выделить всё
__attribute__((always_inline)) static inlineLinux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
И в каждую единицу трансляции надо подключить?
Добавлено after 1 minute 17 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4351283#p4351283"]И что, я это х должен постоянно обновлять?[/uquote]Зачем? Можно пользоваться старым неправильным кодом. Хозяин - барин.
Добавлено after 1 minute 17 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4351283#p4351283"]И что, я это х должен постоянно обновлять?[/uquote]Зачем? Можно пользоваться старым неправильным кодом. Хозяин - барин.
- Реклама
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Я этим кубом не пользуюсь, чисто ради эксперимента.VladislavS писал(а):Зачем? Можно пользоваться старым неправильным кодом. Хозяин - барин.
Я бы открывал бы все эти функции, как в CMSIS. А если что не так, спрашивал бы как правильно делать.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 848
- Зарегистрирован: Ср авг 03, 2022 05:22:56
[uquote="VladislavS",url="/forum/viewtopic.php?p=4351260#p4351260"]\
odr = GPIOx->ODR;
GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
}[/uquote]
"Браво"! Выдайте этому деревянную медаль. За заслуги перед атечествам.
odr = GPIOx->ODR;
GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
}[/uquote]
"Браво"! Выдайте этому деревянную медаль. За заслуги перед атечествам.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Ну дак в чем проблема?
Добавлено after 2 hours 44 minutes 40 seconds:
Добавлено after 5 minutes 9 seconds:
А еще и такого рода советы даете
Хотел чисто ради эксперимента посмотреть, на сколько тактов короче будет. Но, увы.
Добавлено after 2 hours 44 minutes 40 seconds:
Вы издеваетесь? Вы где это взяли?VladislavS писал(а):Вам чем-то не нравится код из STM HAL? Есть лучше вариант?
Код: Выделить всё
Error[Pe020]: identifier "GPIO_NUMBER" is undefined G:\Test_iar\test_f100\Src\main.c 310
А еще и такого рода советы даете
Добавлено after 1 minute 24 seconds:VladislavS писал(а):Да я же не против. Хотите "тогглить" через ODR - ваше право.
Хотел чисто ради эксперимента посмотреть, на сколько тактов короче будет. Но, увы.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 848
- Зарегистрирован: Ср авг 03, 2022 05:22:56
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
НеважноMLX90640 писал(а):Так это ж классика:
Код: Выделить всё
//GPIOC->ODR ^= (GPIO_PIN_8); // 7 тактов 4416 байт
//HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8); // 13 такта 4428 байт
//HAL_GPIO_TogglePin_2(GPIOC, GPIO_PIN_8); // 15 такта 4420 байт
//GPIOC->ODR ^= (GPIO_PIN_8);- Сообщения: 848
- Зарегистрирован: Ср авг 03, 2022 05:22:56
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
VladislavS, моя прошивка как раз сейчас занимает 0x3FEB, а мне надо уместить ее ровно в 16383 Байт, можно конечно использовать ключик -flto, но это уберет отладочную информацию, но она, в принципе, и не нужна.
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Кстати, да, правильно toggle-макрос так писать:
Будет меньше операций.
Код: Выделить всё
#define pin_toggle(gpioport, gpios) do{ \
register uint32_t __port = gpioport->ODR; \
gpioport->BSRR = (gpios << 16) | (~__port & gpios);}while(0)
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Dimon456, Зачем вы меня то уговариваете? Я же часов 5 назад ещё разрешил вам делать как хотите. 
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
VladislavS, просто интересно понять, чем отличатся ODR от BSRR (если вы правильно поняли мой вопрос)?



