Код: Выделить всё
#include "STM32F10x.h"
int main (void)
{
uint32_t i;
GPIO_InitTypeDef GPIO_Init_Led;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_Init_Led.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5;
GPIO_Init_Led.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init_Led.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOD, &GPIO_Init_Led);
while(1)
{
GPIO_SetBits(GPIOD, GPIO_Pin_All);
for(i=0;i<2000000;i++){}
GPIO_ResetBits(GPIOD, GPIO_Pin_All);
for(i=0;i<2000000;i++){}
}
}
Первым делом объявляем переменную с помощью которой мы будем инициализировать структуру нашей функции.
GPIO_InitTypeDef GPIO_Init_Led;
GPIO_InitTypeDef - указываем тип переменной на видео показано где и куда смотреть.
Далее идет GPIO_Init_Led это наша переменная и имя у нее произвольное, но лучше чтобы они несли смысловую нагрузку
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
Вот этой строкой мы включаем тактирование шины APB2 и всей периферии которая находится на данной шине если внимательно присмотреться то можно увидеть что данная шина разветвляется и есть такие модели МК которые поддерживают тактирование не всей шины а конкретного узла который находится на ней, тем самым уменьшая энерго потребление МК (вот к примеру сотовые телефоны почти все работают на ядре ARM)
GPIO_Init_Led.GPIO_Pin = GPIO_Pin_1| GPIO_Pin_3| GPIO_Pin_5;
Данная строка указывает номер вывода порта D , чтобы компилятор понял к какому выводу применить настройки идущие строчками ниже.
GPIO_Init_Led.GPIO_Mode = GPIO_Mode_Out_PP;
В данной строке указывается режим в котором должен работать наш вывод. нам нужно чтобы наш вывод работал на выход.
GPIO_Init_Led_Speed = GPIO_Speed_2MHz;
Эта строка устанавливает частоту на которой будут работать наши выводы, это частота тактирования от внутреннего генератора.
GPIO_Init(GPIOD, &GPIO_Init_Led);
Данной строкой мы инициализируем наш порт D, другими словам применяем выше описанные настройки к нашему порту.
Компилируем - загружаем в плату - перезагружаем плату (иначе не будет результата) - любуемся результатом.
phpBB [media]