uint8_t led_state = 0x03; Данной командой мы завели переменную, которая равна 3
что под этим подразумевается?
HAL_GPIO_WritePin(GPIOE, led_state << 8, GPIO_PIN_SET); Это я так понимаю мы сначала устанавливаем самый первый светодиод, т.е. 8, но на практике ни так.
led_state = led_state >> 1 | led_state << 7;Эту строку совсем не понимаю.
И решение, если я читаю часы-минуты-секунды и получаю в секундах 00 - то мне следует перечитать минуты ещё раз и сделать вывод.
почему нельзя занести этот бит в регистр без сдвига, зачем это придумано
UCSRA |= (1<<U2X);
UCSRA |= U2X;
. В ассемблерном коде avr оба эти варианта превратятся в инструкцию sbi UCSRA, 1
, устанавливающую бит в регистре по номеру.Схема подключения:
В микроконтроллерах понимания ноль
Какие косяки меня могут поджидать?
Есть способ лучше?
void send_uint32(uint32_t v)
{
uint8_t transmitBuffer[4];
memcpy(transmitBuffer, &v, sizeof(v));
HAL_UART_Transmit_IT(&huart1, transmitBuffer, sizeof(v));
}
$ cat > test.cpp <<EOF
class type_class {
int field1;
int field2;
public:
constexpr type_class (int f1, int f2): field1(f1), field2(f2) {
}
};
extern const type_class var;
const type_class var(12, 34);
EOF
$ g++ -S -O2 test.cpp
$ cat test.s
.file "test.cpp"
.globl var
.section .rodata
.align 8
.type var, @object
.size var, 8
var:
.long 12
.long 34
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
Почему так происходит, если делать изменения в коде, которые я описал выше?
Если в этом коде удалить саму метку RESET:, то есть только метку, но не обработчик прерывания RESET - код не работает
почему если я размещаю обработчик прерывания RESET последним - он также не работает
Для чего нужна процедура RESET?
Как она вызывается
P.S. выделение памяти в прерываниях зло и т.д. ага.
Так вот, что бы не проставлять кучу __disable_irq(); __enable_irq();
Пользуются популярностью микроконтроллеры на x86 совместимых процессорах ?
Собственно на сколько я понял т.н. прерываний нет в esp 2688.
Какой инструкцией можно читать данные из флеша?
Возможны ли конструкции
mov bx,byte[i+1]
ldi r30, lo8(Message)
ldi r31, hi8(Message)
loop:
lpm
adiw r30, 1
mov byte, r0
ldi temp,0x01 ;RS-bit (0 - sending command, 1 - send data)
rcall send_byte ;Call procedure for send a symbol as 4-bit mode
delayClocks 100,1,1 ;some delay
dec len ;len is length of string
brne loop