ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1108183
IBAH (10.06.2021 15:10, просмотров: 10321)
Очередная подлянка от STM32F103... Доступ к регистрам GPIO 

Пишу через DMA из памяти в регистр GPIOA->ODR, по байту. Переписываются нулём и старшие биты регистра. Смотрю мануал, в описании регистра "These bits can be read and written by software and can be accessed in Word mode only." То есть нельзя писать по 8 бит, можно только по 32.

Решил проверить

Ё
while(!0)
{
 *((unsigned char*)(&(GPIOA->ODR)))=1;
 *((unsigned char*)(&(GPIOA->ODR)))=0;
GPIOA->BSRR=GPIO_BSRR_BS12;
}
??main_5: (+1)
   \   000000B4   0x2001             MOVS     R0,#+1
   \   000000B6   0x7020             STRB     R0,[R4, #+0]
   \   000000B8   0x2000             MOVS     R0,#+0
   \   000000BA   0x7020             STRB     R0,[R4, #+0]
   \   000000BC   0x6065             STR      R5,[R4, #+4]
   \   000000BE   0xE7F9             B.N      ??main_5
Ё




В натуре!

STM32F103 - сборище подлянок, на других СТМах таких проблем нет. У ST даже апликуха по этому поводу есть "Parallel synchronous transmission using GPIO and DMA". Там вообще пишут в старший байт ODR.