About STM32

Порты ввода/вывода

Органы чувств человека переоценить невозможно..без слуха, зрения, осязания человек становится...в общем порты ввода/вывода - это органы чувст любого контроллера. Без них эта штуковина мигом превратится в хлам, посему мне кажется логичным начать с записи о портах ввода/вывода (GPIO - general port input/output). Максимально порт может состоять из 16 пинов.
   В микроконтроллере stm32 за настройку любого из портов отвечает 7 регистров:
GPIO_CRL - configeration register low
GPIO_CRH - configeration register high
GPIO_IDR - input data register
GPIO_ODR - output data register
GPIO_BSRR - bit set/reset register
GPIO_BRR - bit reset register
GPIO_LCKR - lock register
  За настройку любого пина отвечает 4 бита: CNF0, CNF1, MODE0, MODE1. Эти биты находятся в регситрах GPIO_CRL( 0-7 пин ) и GPIO_CRН ( 8-15 пин ). Любой пин можно настроить на один из режимов работы, глобально это ВХОД или ВЫХОД. Пины одного и того же порта между собой не зависят, т.е. пины конфигурируются абсолютно произвольно.

Итак, начнем с простого:
    MODE0 и MODE1 отвечают за частоту тактирования порта. Раз уж я в начале статьи провел параллель с человеком, то и тут не отступлю. Тактирование в микроконтроллерах - это пульс человека. Чем он быстрее, тем человек энергичнее, шустрее и прожорливие, аналогичнее и с переферией МК(микроконтроллера).

MODE1 MODE0 Результат
  0             0             Вход  
  0             1            2 МГц
  1             0            10 МГц
  1             1            50 МГц

 Второе, режимов работы хоть отбавляй.

CNF1 CNF0 Результат
                       ВЫХОД
   0          0          Двухтактный ( общего назначения )
   0          1          С открытым стоком ( общего назначения )
   1          0          Двухтактный ( подключен к периферии )
   1          1          С открытым стоком ( подключен к периферии )
                        ВХОД
   0          0           Аналоговый
   0          1          Свободный
   1          0          Прижатый к земле
   1          1          Притянутый к питанию

Примеры:

Прим. При включении все биты регистров настроек сброшены в 0.

Настроить пин 4 порта А на двухтактный выход с частотой 10 МГц:

GPIOA_CRL |= GPIO_CRL_MODE4_1;

Настроить пин 10 порта В на вход с подтяжкой к питанию:

GPIOB_CRH |= GPIO_CRH_CNF10;
 
Хостинг от uCoz