Ваша корзина пуста!
Ваша корзина пуста!
Первым проектом на STM32F4discovery как это принято будет Hello World, в нашем случае это будут 4 светодиода (зеленый, оранжевый, красный и синий) которые мы будем последовательно зажигать.
И так, предположим что у нас есть уже готовый к работе проект, если нет то прочтите сначала вот эту статью.
Первым делом подключаем файл библиотеки:
#include <stm32f4xx.h>
Затем инициализируем GPIO:
GPIO_InitTypeDef GPIO_InitStructure;
Теперь что бы диоды загорались по очереди, нам нужна функция задержки:
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
Теперь переходим непосредственно к программе, включаем тактирование порта D:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
Дальше дальше конфигурируем выводы PD12, PD13, PD14 и PD15 на которых собственно и висят наши диоды:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(GPIOD, &GPIO_InitStructure);
Теперь остается только зажигать ждать и сбрасывать:
while (1)
{
/* зажигаем зеленый (PD12) */
GPIO_SetBits(GPIOD, GPIO_Pin_12);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем оранжевый (PD13) */
GPIO_SetBits(GPIOD, GPIO_Pin_13);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем красный (PD14) */
GPIO_SetBits(GPIOD, GPIO_Pin_14);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем синий (PD15) */
GPIO_SetBits(GPIOD, GPIO_Pin_15);
/* Задержка */
Delay(0x7FFFFF);
/* сбрасываем все 4-ре */
GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
/* Задержка */
Delay(0xFFFFFF);
}
Ну и полный код программы который должен был у вас получиться:
#include
GPIO_InitTypeDef GPIO_InitStructure;
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
int main(void)
{
/* включаем тактирование порта D */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
/* конфигурируем выводы PD12, PD13, PD14 и PD15 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(GPIOD, &GPIO_InitStructure);
while (1)
{
/* зажигаем зеленый (PD12) */
GPIO_SetBits(GPIOD, GPIO_Pin_12);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем оранжевый (PD13) */
GPIO_SetBits(GPIOD, GPIO_Pin_13);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем красный (PD14) */
GPIO_SetBits(GPIOD, GPIO_Pin_14);
/* Задержка */
Delay(0x3FFFFF);
/* зажигаем синий (PD15) */
GPIO_SetBits(GPIOD, GPIO_Pin_15);
/* Задержка */
Delay(0x7FFFFF);
/* сбрасываем все 4-ре */
GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
/* Задержка */
Delay(0xFFFFFF);
}
}