ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
788346 Топик полностью
IBAH (20.10.2017 19:51, просмотров: 188) ответил 0men на покажи кусок кода
Каждый объект(структура) Хала содержит поле State, при статическом объявлении все поля обнуляются. Значению 0 для переменной State соответствует значение STATE_RESET. Инициализация периферии проходит. При динамическом объявлении (как сделал я, нафига хранить кучу данных, если я ими не буду пользоваться) структуры значения полей НЕ ОПРЕДЕЛЕНЫ! И поэтому то работает, то не работает. Если пользуете хал-объекты на внутреннем уровне, инициализируйте ВСЕ поля! Мало того, эти пидарасы запрятали такой макрос #define __HAL_LOCK(__HANDLE__) \ do{ \ if((__HANDLE__)->Lock == HAL_LOCKED) \ { \ return HAL_BUSY; \ } \ else \ { \ (__HANDLE__)->Lock = HAL_LOCKED; \ } \ }while (0) Что видит читатель? __HAL_LOCK(uart1), думает какая-то халохрень, и читает дальше. А там return HAL_BUSY;