Всем привет, не мог бы кто нибудь подсказать как работают пару строк в коде?
Сам код
#include "stm32_p407.h" //Файл конфигурации отладочой платы STM32-P407
#include "lcd.h"
// ПОДПРОГРАММА КОНФИГУРИРОВАНИЯ РАЗРЯДА ПОРТА PB1
void PF8_Init(void);
void tekznach(int);
void PF8_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//Структура конфигурации портов общего назначения
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
//Разрешение тактирования порта
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
//Маска на выходной разряд
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
//Режим: вывод
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
//Задание быстродействия (2MHz, 25MHz, 50MHz, 100MHz)
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//Установка типа выходного каскада: двухтактный
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//Подтягивающий резистор: нет
GPIO_Init(GPIOB, &GPIO_InitStructure);
//Функция конфигурирования
}
uint16_t Channel_table[8]={0xB678, 0xAAAA, 0xCCCC, 0xE38E, 0x5555, 0x3333, 0x2222, 0x1111};
int i=1, n=0; //счетчик
uint16_t joy, indic; //Код от джойстика, код для вывода на индикаторы
//---------------------------------------------------------------------------
// ГЛАВНАЯ ФУНКЦИЯ
int main()
{
//Инициализация органов управления
STM_PBInit(BUTTON_TAMPER, BUTTON_MODE_GPIO); //Кнопка TAMPER
STM_PBInit(BUTTON_WAKEUP, BUTTON_MODE_GPIO); //Кнопка WAKEUP
STM_PBInit(BUTTON_RIGHT, BUTTON_MODE_GPIO); //Позиции джойстика
STM_PBInit(BUTTON_LEFT, BUTTON_MODE_GPIO);
STM_PBInit(BUTTON_UP, BUTTON_MODE_GPIO);
STM_PBInit(BUTTON_DOWN, BUTTON_MODE_GPIO);
STM_PBInit(BUTTON_SEL, BUTTON_MODE_GPIO);
//Инициализация дисплея
LCD_Init(); LCD_Clear(0);
LCD_FontSize(13);
// Конфигурирование разряда PF8 на вывод
PF8_Init();
//Цикл в основной программе
while (1)
{
//Проверка воздействия на кнопку WAKEUP, при нажатии - выход из цикла
//if (STM_PBGetState(BUTTON_WAKEUP)) break;
if (STM_PBGetState(BUTTON_LEFT))
{
n=1;
tekznach(n);
}
if (STM_PBGetState(BUTTON_UP))
{
n=2;
tekznach(n);
}
if (STM_PBGetState(BUTTON_RIGHT))
{
n=3;
tekznach(n);
}
if (STM_PBGetState(BUTTON_DOWN))
{
n=4;
tekznach(n);
}
if ((STM_PBGetState(BUTTON_TAMPER)==0) && (STM_PBGetState(BUTTON_LEFT)))
{
n=5;
tekznach(n);
}
if ((STM_PBGetState(BUTTON_TAMPER)==0) && (STM_PBGetState(BUTTON_UP)))
{
n=6;
tekznach(n);
}
if ((STM_PBGetState(BUTTON_TAMPER)==0) && (STM_PBGetState(BUTTON_RIGHT)))
{
n=7;
tekznach(n);
}
if ((STM_PBGetState(BUTTON_TAMPER)==0) && (STM_PBGetState(BUTTON_DOWN)))
{
n=8;
tekznach(n);
}
}
//Сброс процессора - завершение выполнения данной программы, запуск начального загрузчика
NVIC_SystemReset();
}
//---------------------------------------------------------------------------
void tekznach(n)
{
LCD_TextPos(1,3); LCD_print(" Канал %d ", n);
for (i=0; i<16; i++)
{
indic=(Channel_table[n]<<i & 0x8000);
if (indic==0)
{
STM_LEDOn(LED4);
Delay_ms(30);
}
else
{
STM_LEDOff(LED4);
Delay_ms(30);
}
}
STM_LEDOff(LED4);
}
////-------------------------------------------------------------------------
uint16_t Channel_table[8]={0xB678, 0xAAAA, 0xCCCC, 0xE38E, 0x5555, 0x3333, 0x2222, 0x1111};
if ((STM_PBGetState(BUTTON_TAMPER)==0) && (STM_PBGetState(BUTTON_LEFT)))
LCD_TextPos(1,3); LCD_print(" Канал %d ", n);
for (i=0; i<16; i++)
{
indic=(Channel_table[n]<<i & 0x8000);
if (indic==0)