Здравствуйте!
Написал наконец первую программу к STM (диодиком мигать с кнопки)

.
Она заработала, но по не совсем понятным для меня причинам (ибо делалась по шаблону от STMF1xx.).
Вот код:
Код: Выделить всё
#include "stm32f0xx.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_gpio.h"
void initAll()
{
//Объявляем переменную port типа GPIO_InitTypeDef
GPIO_InitTypeDef port;
//Это функция из файла stm32f10x_rcc.c, включает тактирование на GPIOA
//GPIOA сидит на шине APB2
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
//Про эту функцию напишу чуть ниже
GPIO_StructInit(&port);
//Заполняем поля структуры нужными значениями
//Первый вывод – вход для обработки нажатия кнопки – PA1
port.GPIO_Mode = GPIO_Mode_IN;
port.GPIO_Pin = GPIO_Pin_1;
port.GPIO_Speed = GPIO_Speed_2MHz;
//А про эту функцию мы уже говорили
//Отметим только что один из параметров – указатель(!) на
//нашу структуру
GPIO_Init(GPIOA, &port);
port.GPIO_Mode = GPIO_Mode_OUT;
port.GPIO_Pin = GPIO_Pin_1;
port.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &port);
}
/*******************************************************************/
int main()
{
//Объявляем переменную для хранения состояния кнопки
uint8_t buttonState = 0;
initAll();
while(1)
{
//С помощью функции из SPL считываем из внешнего мира
//состояние кнопки
buttonState = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
if (buttonState == 1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_1);
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
}
}
}
Обязательно ли делать
void initAll()? В CVAVR я просто после объявления переменных проводил инициализацию и всё...
Вот момент настройки пина1 порта B:
port.GPIO_Mode = GPIO_Mode_OUT;
port.GPIO_Pin = GPIO_Pin_1;
port.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &port);
То есть, сначала мы проводим саму настройку, а потом объявляем порт, к которому эти настройки будут отнесены (GPIO_Init(GPIO
B, &port);)?
А вообще, стоит ли использовать SPL? Раньше я как-то битами всё делал, и понятно всё было (это в АВР

), а тут ещё и библиотеку изучать приходится... Но вроде говорят удобно в дальнейшем...

Ах да... И ещё... Как заставить КЕЙЛ показывать мне состояние переменных во время отладки?