Список переменных, включенных в структуры для функций работы с портами, описаны в том же файле несколько выше описания функций. Так, например, структура «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