Список переменных, включенных в структуры для функций работы с портами, описаны в том же файле несколько выше описания функций. Так, например, структура «GPIO_InitTypeDef» имеет следующую структуру:

typedef struct
{

 uint16_t GPIO_Pin;   /* флаги номеров соответствующих выводов, для которых предполагается произвести необходимую настройку. Можно произвести настройку сразу несколько выводов, задав в качестве параметра несколько констант через оператор побитовое ИЛИ */

 GPIOSpeed_TypeDef GPIO_Speed; /* максимально возможную скорость работы выхода порта. Список возможных значений данного поля:
 GPIO_Speed_10MHz
 GPIO_Speed_2MHz
 GPIO_Speed_50MHz
*/

 GPIOMode_TypeDef GPIO_Mode;   /*

  • GPIO_Mode_AIN — аналоговый вход (англ. Analog INput);
  • GPIO_Mode_IN_FLOATING — вход без подтяжки, болтающийся (англ. Input float) в воздухе
  • GPIO_Mode_IPD — вход с подтяжкой к земле (англ. Input Pull-down)
  • GPIO_Mode_IPU — вход с подтяжкой к питанию (англ. Input Pull-up)
  • GPIO_Mode_Out_OD — выход с открытым стоком (англ. Output Open Drain)
  • GPIO_Mode_Out_PP — выход двумя состояниями (англ. Output Push-Pull — туда-сюда)
  • GPIO_Mode_AF_OD — выход с открытым стоком для альтернативных функций (англ. Alternate Function). Используется в случаях, когда выводом должна управлять периферия, прикрепленная к данному выводу порта (например, вывод Tx USART1 и т.п.)
  • GPIO_Mode_AF_PP — то же самое, но с двумя состояниями

*/

}GPIO_InitTypeDef;

Пример:

#include "stm32f10x_gpio.h"

void GPIO_Configuration(void)
{

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /*подаем тактирование на регистры порта, обязательно (при отсутствии тактирование общий ток потребления контроллером меньше, переферия отключена; запись происходит, но не запоминается)*/

  GPIO_InitTypeDef GPIO_InitStructure;

  /* RC5 pin configuration:  floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /*! не 9, а 9 бит, т.е. (1<<9) */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  GPIO_SetBits(GPIOC,GPIO_Pin_9);
}

В теле программы:

     GPIO_SetBits(GPIOC,GPIO_Pin_9); /*на PC9 - 3.3v*/
      GPIO_ResetBits(GPIOC,GPIO_Pin_9); /*PC9 замкнут на 0*/
 

 

Обратная связь

Интересуют вопросы реализации алгоритмов, программирования, выбора электроники и прочая информация, постараюсь осветить в отдельных статьях

пишите мне на netdm@mail.ru