ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
45129 Топик полностью
V_Shamaev (28.11.2005 12:41, просмотров: 1) ответил P_Igorek на Комманда асемблера GNU для AT91RM9200 выода 16 битного слова в 16 битную шину?
Как говорил мудрый слоненок - если чего-нибудь не знаеш, надо спросить у того кто знает. Спросим у eCos-а Из файла hal_io.h : //----------------------------------------------------------------------------- // 16 bit access. // Individual and vectorized access to 16 bit registers. // Little-endian version or big-endian version that doesn't need address munging #if (CYG_BYTEORDER == CYG_LSBFIRST) || defined(HAL_IO_MACROS_NO_ADDRESS_MUNGING) #define HAL_READ_UINT16( _register_, _value_ ) \ ((_value_) = *((volatile CYG_WORD16 *)(_register_))) #define HAL_WRITE_UINT16( _register_, _value_ ) \ (*((volatile CYG_WORD16 *)(_register_)) = (_value_)) #define HAL_READ_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \ CYG_MACRO_START \ cyg_count32 _i_,_j_; \ for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_j_]; \ CYG_MACRO_END #define HAL_WRITE_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \ CYG_MACRO_START \ cyg_count32 _i_,_j_; \ for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ ((volatile CYG_WORD16 *)(_register_))[_j_] = (_buf_)[_i_]; \ CYG_MACRO_END #define HAL_READ_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ ((volatile CYG_WORD16 *)(_register_))[_i_] = (_buf_)[_i_]; \ CYG_MACRO_END --------------- Из файла cyg_type.h : #define CYG_MACRO_START do { #define CYG_MACRO_END } while (0) ---------- CYG_WORD16 - unsigned short ---------- Что происходит в деталях - не исследовал за ненадобностью, т.к. все работает корректно.