Size: a a a

2020 January 03

A

ASSembler in STM32
проверил, работает
источник

n

noname in STM32
ASSembler
тоесть нужно дождаться сброса бита, а ты ждешь его установки
я что-то не так сделал, непонял чуть чуть, я побитово умножаю регистр на бит ADC_CR2_CAL, когда он будет сброшен получится ноль и беру инверсию от выражения
источник

A

ASSembler in STM32
noname
я что-то не так сделал, непонял чуть чуть, я побитово умножаю регистр на бит ADC_CR2_CAL, когда он будет сброшен получится ноль и беру инверсию от выражения
просто убери инверсию (!)
источник

n

noname in STM32
ASSembler
просто убери инверсию (!)
понять, не могу, мне же нужно дождаться, когда (ADC1->CR2 & ADC_CR2_CAL) будет 0
источник

YL

Yury Lyushnevsky in STM32
Расскажите, пожалуйста, как записать значение полностью в порт? То есть, имеется lcd display с 8/16 бит параллельная шина и нужно сразу записать значение в порт, не хочу использовать WritePin
источник

YL

Yury Lyushnevsky in STM32
Вот функцию, например, write pins не нахожу.
источник

AS

Alexey Sidorov in STM32
GPIOx->ODR - пиши сразу в порт что надо, но я бы не советовал так делать. по хорошему надо так:
GPIOx->BRR = (uint32_t)GPIO_Pin_Mask;
GPIOx->BSRR = (uint32_t)GPIO_Pin;
где GPIO_Pin_Mask - все задействованные пины например для первых 8 это будет 0хFF.
а потом выставляешь только нужные
источник

AS

Alexey Sidorov in STM32
но если все таки ты подумаешь в сторону HAL_GPIO_WritePin то знай, туда можно отправлять не только один пин, но и кучку, например HAL_GPIO_WritePin(LCD_DATA_GPIO_PORT,  LCD_DB0_PIN | LCD_DB1_PIN | LCD_DB2_PIN,  GPIO_PIN_SET);
источник

YL

Yury Lyushnevsky in STM32
Alexey Sidorov
но если все таки ты подумаешь в сторону HAL_GPIO_WritePin то знай, туда можно отправлять не только один пин, но и кучку, например HAL_GPIO_WritePin(LCD_DATA_GPIO_PORT,  LCD_DB0_PIN | LCD_DB1_PIN | LCD_DB2_PIN,  GPIO_PIN_SET);
Этот вариант не пойдёт.
источник

YL

Yury Lyushnevsky in STM32
Alexey Sidorov
GPIOx->ODR - пиши сразу в порт что надо, но я бы не советовал так делать. по хорошему надо так:
GPIOx->BRR = (uint32_t)GPIO_Pin_Mask;
GPIOx->BSRR = (uint32_t)GPIO_Pin;
где GPIO_Pin_Mask - все задействованные пины например для первых 8 это будет 0хFF.
а потом выставляешь только нужные
То есть в hal не реализована такая функция записи полностью в порт?
источник

AS

Alexey Sidorov in STM32
это не безопасно, потому и не реализовано
источник

AS

Alexey Sidorov in STM32
HAL_GPIO_WritePin с таким же успехом разом пишет и стирает порт
источник

YL

Yury Lyushnevsky in STM32
Почему не безопасно?
источник

YL

Yury Lyushnevsky in STM32
Вот мне, например, надо отправить 0х55 в порт, я же не буду выставлять каждый бит... Это долгая операция будет... И в итоге снижение скорости...
источник

AS

Alexey Sidorov in STM32
Yury Lyushnevsky
Почему не безопасно?
когда ты выставишь на порту 0х55 через GPIOx->ODR у тебя затрется информация и на других пинах
источник

YL

Yury Lyushnevsky in STM32
Это я понимаю. Я выделю весь порт для lcd.
источник

AS

Alexey Sidorov in STM32
Alexey Sidorov
HAL_GPIO_WritePin с таким же успехом разом пишет и стирает порт
вы не читаете, для вас это будет так HAL_GPIO_WritePin(GPIOA, 0x55,  GPIO_PIN_SET);
источник

AS

Alexey Sidorov in STM32
но перед этим надо скинуть все что касается экрана HAL_GPIO_WritePin(GPIOA, 0xFF,  GPIO_PIN_RESET);
источник

YL

Yury Lyushnevsky in STM32
Спасибо. Не знал, что так можно делать. Буду пробовать.
источник

YL

Yury Lyushnevsky in STM32
Alexey Sidorov
но перед этим надо скинуть все что касается экрана HAL_GPIO_WritePin(GPIOA, 0xFF,  GPIO_PIN_RESET);
Зачем скидывать?
источник