ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
2 апреля
1509166 Топик полностью
Boвa (30.03.2025 13:48, просмотров: 79) ответил PeterD на Ребята доброй пятницы всем, АЦП отдает данные 18 бит, 18-ый бит знаковый можно как-то быстро привести его к виду int32_t или надо все биты старшие в ручную 18 битом заполнять, ARM Cortex-M23.
int tmp = 0x040000; ADC_Data =((ADC_Data + tmp) & 0x7FFFF) - tmp; //т.е. сначала приводим все числа к числам без знака (положительным), ограничивая разрядность 18 битами, потом отнимаем константу приведения уже в 32 битах. Работает сие без условных переходов и неизбежного при этом сброса конвейера. 

Конечно если у вас есть тест бита и бранч по результату то можно обойтись двумя-тремя командами ассемблера .