STM32F407, назначение альтернативных функций выводам GPIO |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
У микроконтроллера семейства STM32F40x есть 16-битные порты GPIO, которые носят имя GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH, GPIOI, у некоторых даже есть GPIOJ и GPIOK (на самом деле все порты GPIO представляются в адресном пространстве как 32-битные регистры, но у них старшие 16 бит зарезервированы и не используются). У каждого такого порта 16 ножек. В зависимости от типа используемого корпуса (LQFP100, LQFP144 и т. п.) некоторые порты могут отсутствовать. Например, у микроконтроллера STM32F407ZGT6 в корпусе LQFP144 отсутствуют порты GPIOH/I/J/K. В даташите буквы A..I/J/K заменяют символом x, когда обобщенно говорят о всех регистрах GPIO: GPIOx означает все порты GPIO от GPIOA до GPIOI. Каждой ножке порта любого порта A..K можно присвоить любую из 16 альтернативных функций от AF0 до AF15. Альтернативная функция - это привязка ножки к какому-либо периферийному устройству микроконтроллера, например к порту SPI, USART, USB и т. д. Назначение альтернативной функции каждому выводу делается с помощью регистров GPIOx_AFRH и GPIOx_AFRL. Эти регистры 32-битные, и все их биты поделены на четверки бит, каждая четверка соответствует отдельной ножке порта GPIOx. Регистр GPIOx_AFRH отвечает за ножки с номерами бит от 15 до 8, а регистр GPIOx_AFRL отвечает за ножки с номерами бит от 7 до 0. Каждая альтернативная функция имеет двоичный номер от 0 до 15 (от AF0=0 до AF15=15), именно этот 4-битный номер записывается в четверку бит регистров GPIOx_AFRH и GPIOx_AFRL, определяя этим функционирование ножки порта. Регистр назначает альтернативную функцию ножкам портов с номерами бит от 7 до 0. Например, четверка бит AFRL2 в регистре GPIOB_AFRL назначит ножке 2 порта GPIOB (т. е. PB2) любую альтернативную функцию от AF0=0 до AF15=15. Смещение адреса для GPIOx_AFRL равно 0x20, значение после сброса 0x00000000 (после сброса все ножки портов выполняют альтернативную функцию AF0).
Регистр назначает альтернативную функцию ножкам портов с номерами бит от 15 до 8. Например, четверка бит AFRH13 в регистре GPIOA_AFRH назначит ножке 13 порта GPIOA (т. е. PA13) любую альтернативную функцию от AF0=0 до AF15=15. Смещение адреса для GPIOx_AFRH равно 0x24, значение после сброса 0x00000000 (после сброса все ножки портов выполняют альтернативную функцию AF0).
[Таблицы альтернативных функций портов микроконтроллеров STM32F405xx, STM32F407xx] По умолчанию (после сброса) все ножки портов GPIOx настроены на альтернативную функцию AF0. Таблицу всех альтернативных функций можно найти в даташите на микроконтроллер, она называется Alternate function mapping.
|