внести исправления в мой исходник оказалось невозможно без изменения всей структуры алгоритма. В связи с этим решил обойти недочет "железным" способом.
И опять проблема.
Решил добавить пин и через него по дополнительной команде развести токи по нужным направлениям. Но задействовать дополнительный вывод оказалось не так просто. Кроме main.c, вносил изменения в mx_init.c
Конфиг. выводов в моем случае выглядит так (файл mx_init.c):
// Настройка портов на ввод
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOB, &GPIO_InitStructure );
// Настройка портов на вывод
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | \
GPIO_Pin_2 | \
GPIO_Pin_3 | \
GPIO_Pin_4 | \
GPIO_Pin_5 | \
GPIO_Pin_6 | \
GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOA, &GPIO_InitStructure );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOB, &GPIO_InitStructure );
GPIO_ResetBits( GPIOA,GPIO_Pin_1 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_2 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_3 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_4 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_5 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_6 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_7 ); // Сбросить бит
GPIO_ResetBits( GPIOB,GPIO_Pin_0 ); // Сбросить бит
GPIO_ResetBits( GPIOB,GPIO_Pin_1 );
Добавляю в инициализацию порт (PA14, на вывод), получается так:
// Настройка портов на ввод
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOB, &GPIO_InitStructure );
// Настройка портов на вывод
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | \
GPIO_Pin_2 | \
GPIO_Pin_3 | \
GPIO_Pin_4 | \
GPIO_Pin_5 | \
GPIO_Pin_6 | \
GPIO_Pin_14 | \
GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOA, &GPIO_InitStructure );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOB, &GPIO_InitStructure );
GPIO_ResetBits( GPIOA,GPIO_Pin_1 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_2 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_3 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_4 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_5 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_6 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_7 ); // Сбросить бит
GPIO_ResetBits( GPIOA,GPIO_Pin_14 ); // Сбросить бит
GPIO_ResetBits( GPIOB,GPIO_Pin_0 ); // Сбросить бит
GPIO_ResetBits( GPIOB,GPIO_Pin_1 );
Управляю командой
GPIO_SetBits( GPIOA,GPIO_Pin_14 ); - Ноль реакции. В программе так, если активен тот-то режим, то GPIO_SetB...
Пробовал с портами А и В. PB постоянно активен ("1" на выходе), PA - на всех выводах "0". Команда из любого места программы, будь-то SetBits или ResetBits никакого влияния на состояние вывода не оказывает (если B, то всегда 1, если А, то 0).
В каком месте ещё, кроме файла mx_init.c, может быть обозначен/фиксирован статус портов, их назначение?