Сейчас изображу ...
Например для USART .
Идем на раздел 4 Pin descriptions даташита .
Смотрим таблицу 9 Table 9. Alternate function input/output
Ищем необходимую нам АФ . Смотрим на каких пинах висит и значение АФ .
В нашем случае это пины PA9 и P10 и значение АФ для обоих AFIO7 .
Идем в референсе мануал.
6.4.9 GPIO alternate function low register (GPIOx_AFRL) (x = A..H)
и
6.4.10 GPIO alternate function high register (GPIOx_AFRH) (x = A..H)
Два 32х битных регистра . По 4бита на каждый пин .
Определены в хэдере как массив .
В итоге нам нужно в регистр GPIOA_AFRH, в позиции AFRH10 и AFRH9 занести значения AFIO7 (0x07).Код:__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high registerBSRR, Address offset: 0x1A */ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ __IO uint32_t AFR[2]; /*!< GPIO alternate function low register, Address offset: 0x20-0x24 */ __IO uint16_t BRR; /*!< GPIO bit reset register, Address offset: 0x28 */ uint16_t RESERVED3; /*!< Reserved, 0x2A */ } GPIO_TypeDef;
и получаем :
Код:GPIOA->AFR[1] |= (7<<(4*2)) |(7<<(4*1));
---------- Post added at 15:26 ---------- Previous post was at 14:44 ----------
Для SPI1 :
пины PA5-PA7 , AFIO5 .
или
пины PB3-PB5 , AFIO5
NSS не трогаю ибо толку от него 0 ...
---------- Post added at 15:30 ---------- Previous post was at 15:26 ----------
В конструкциисемерки - значение АФ .Код:GPIOA->AFR[1] |= (7<<(4*2)) |(7<<(4*1));
двойка и единица - порядковые номера пинов , если разделить 16битный порт на два 8ми битных...






ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
ATARI 800XL+SIO2PC+SIO2SD
Ответить с цитированием