SPL: мигаем светодиодом

     Краткое описание: В предыдущих статьях мы научились создавать проект для Keil uVision и прошивать микроконтроллер при помощи программы Flash Loader Demonctration. Теперь давайте попробуем помигать одним из пользовательских светодиодов.  

     На плате установлен двойной красный/зеленый светодиод, который подключен к ножкам PC6/PC7 соответственно. Для того что бы работать с ножкой микроконтроллера необходимо заполнить структуру инициализации: настроить тактирование, выбрать режим работы пина вход/выход (нам нужно настроить его на выход), выбрать саму ножку (в нашем случае это PA7), инициализировать структуру с настройками. После чего вызвать функцию инициализации в теле программы main. Включение и выключение светодиода происходит в бесконечном цикле, для этого мы используем функцию задержки перед включением и выключением светодиода.    

     Задача: Требуется написать с использованием библиотеки StdPeriph код. Программа должна в основном цикле включать и выключать пользовательский светодиод с небольшой задержкой. 

#include "stm32f30x.h"
#include "stm32f30x_gpio.h"
#include "stm32f30x_rcc.h"
#include "stm32f30x_syscfg.h"

GPIO_InitTypeDef gpio; // Объявляем переменную gpio типа GPIO_InitTypeDef

int i; // Переменная для цикла задержки

void initAll() // Функция инициализации
{
    RCC_HSICmd(ENABLE); // Включаем тактирование от внутреннего источника
    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); // Подаем тактовый сигнал на системную шину
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE); // Включаем тактирование соответствующих портов

    gpio.GPIO_Mode = GPIO_Mode_OUT; // Выбираем режим работы пинов
    gpio.GPIO_Pin = GPIO_Pin_7; // Выбираем нужны пин
    GPIO_Init(GPIOC, &gpio); // Инициализируем структуру с настройками
}

int main()
{
    initAll(); //Вызываем функцию инициализации

    while (1) {
        GPIO_ResetBits(GPIOC, GPIO_Pin_7); // Установить 0 на выводе
        for (i = 0; i < 720000; i++); // Ждем
        GPIO_SetBits(GPIOC, GPIO_Pin_7); // Установить 1 на выводе
        for (i = 0; i < 720000; i++); // Ждем
    }
}

     Скомпилируйте программу нажав кнопку Build, прошейте микроконтроллер, нажмите RESET. У вас на плате должен замигать зеленый светодиод. 

     ВНИМАНИЕ: Приведенный листинг кода не является единственной и оптимальной реализацией поставленной задачи. Пример опубликован с демонстрационной целью. Также автор во избежание переписывания чужих статей, пропускает теоретические основы необходимые для понимания примера, связывая это с тем что всю необходимую информацию можно найти в интернете.

Комментариев (0)

Написать комментарий

Имя *
E-mail
Введите комментарий *
Капча
18 + ? = 28