STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

VladislavS, вот если бы они эту функцию хотя бы как TRUE_INLINE пометили, или макросом бы сделали…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Что такое TRUE_INLINE и как оно на С поможет?
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS писал(а):Где же вы это старьё берёте?
И что, я это х должен постоянно обновлять?, да на кой х оно мне сдалось.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

VladislavS, макрос для

Код: Выделить всё

 __attribute__((always_inline)) static inline
как бы, процентов 99, что будет заинлайнено.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

И в каждую единицу трансляции надо подключить?

Добавлено after 1 minute 17 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=4351283#p4351283"]И что, я это х должен постоянно обновлять?[/uquote]Зачем? Можно пользоваться старым неправильным кодом. Хозяин - барин.
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS писал(а):Зачем? Можно пользоваться старым неправильным кодом. Хозяин - барин.
Я этим кубом не пользуюсь, чисто ради эксперимента.
Я бы открывал бы все эти функции, как в CMSIS. А если что не так, спрашивал бы как правильно делать.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Да я же не против. Хотите "тогглить" через ODR - ваше право. :)
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4351260#p4351260"]\
odr = GPIOx->ODR;
GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
}[/uquote]
"Браво"! Выдайте этому деревянную медаль. За заслуги перед атечествам.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Вам чем-то не нравится код из STM HAL? Есть лучше вариант?
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Ну дак в чем проблема?

Добавлено 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 5 minutes 9 seconds:
А еще и такого рода советы даете
VladislavS писал(а):Да я же не против. Хотите "тогглить" через ODR - ваше право.
Добавлено after 1 minute 24 seconds:
Хотел чисто ради эксперимента посмотреть, на сколько тактов короче будет. Но, увы.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Ладно

Код: Выделить всё

#define GPIO_NUMBER           16u
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А почему оно короче должно быть? Оно должно правильно работать!
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

Так это ж классика:
Изображение
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

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

Сообщение MLX90640 »

Это на случай работы с FreeRTOS и многопоточностью
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS, моя прошивка как раз сейчас занимает 0x3FEB, а мне надо уместить ее ровно в 16383 Байт, можно конечно использовать ключик -flto, но это уберет отладочную информацию, но она, в принципе, и не нужна.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Кстати, да, правильно 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

Сообщение VladislavS »

Dimon456, Зачем вы меня то уговариваете? Я же часов 5 назад ещё разрешил вам делать как хотите. :)
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS, просто интересно понять, чем отличатся ODR от BSRR (если вы правильно поняли мой вопрос)?
Ответить

Вернуться в «ARM»