Existe uma maneira (por exemplo, uma função interna) de fazer um byte-store ( strb
) usando C/C++ com gcc?
Para a seguinte instrução, o gcc usa seguramente um store( ) de 32 bits str
para o registrador.
USART1->TDR = 0x01;
Isso está correto, porque os bits superiores do registro não são usados e são atribuídos 0
(o valor de redefinição conforme o ARM Ref-Manual indica está correto).
Pode-se usar uma função (embutida) do gcc para acionar um byte-store ( strb
) no ARM-Assembler?
Se você desreferenciar um
uint8_t
ponteiro, umastrb
instrução será gerada.Veja também: https://godbolt.org/z/n8v1vcafz
Você não deve fazer isso para registradores STM32, pois eles devem ser acessados com operações de palavra (32 bits). Caso contrário, o comportamento é indefinido.