ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
1005229 Топик полностью
RxTx (17.05.2020 11:38, просмотров: 675) ответил SciFi на Переменные status и b объявлены как volatile. Добавляем тормозов на основании каких-то странных суеверий, видимо.
Я не вылизывал код, сейчас некогда и незачем этим заниматься. В данном случае это лайфхак: 1. При оптимизированном коде переменная существует в стеке и ее можно посмотреть дебаггером. 2. (теория) Некоторые реализации uart/usart требуют обязательного а. считывания статус-регистра. б. считывания гарантированно ДО чтения дата-регистра. в. Читать надо один раз. Для того чтобы обеспечить именно эти гарантии а-ля asm (а не вообще всегда) и убрать нежелательные оптимизации и 

создать гарантированные sequence

point, даже локальные переменные в которые читается из регистров объявляются volatile. Обращаю внимание - именно эти гарантии, а не вообще всегда.

3. Отлаживался, смотрел что происходит, думал что есть проблема с правильным чтением ST UART, чтобы заведомо избежать грабель объявил как volatile.

Как-то так.