Подключаемся к микроконтроллерам фирмы STM32 в среде программирования Keil uVision.

Сегодня мы с Вами рассмотрим несколько плат с которыми будем работать , а также способы к ним подключиться.

В основном для отладки программного кода мы будем использовать отладочные платы Nucleo:

и платы — «сборки» :

Для подключения к отладочным платам достаточно иметь соответствующий USB разъем,  а для плат — сборок будем использовать программатор ST-LINK для микроконтроллеров серии  STM32F .

Программировать мы будем в среде программирования Keil uVision, данная программа бесплатная для работы, но при этом имеет некоторые ограничения по объему загружаемой памяти.  Для заливки ПО в отладочную плату нам необходимо в самой программе нажать иконку загрузки или F8 :

если мы используем программатор ST-LINK, мы будем пользоваться программой STM32 ST-LINK Utility:

И в качестве проверки, что мы все правильно сделали поморгаем светодиодом который находиться на плате Nucleo stm32f103 который подключен к ножке PA5, а в случаи платы — сборки (у меня на плате стоит микроконтроллер stm32f411) ножка С13.

Настройка микроконтроллера происходит в программе STM32CubeMX, где мы выбираем либо отладочную плату:

либо тип микроконтроллера с которым будем работать:

Далее нам необходимо настроить систему тактирования (в данном случаи мы только включим внешний кварц):

а так же настроим ножку к которой подключен светодиод на выход:

после чего сгенерируем проект:

и откроем его уже в Keil uVision5.

Программный код пока поместим в указанное ниже место, для проверки работы микроконтроллера (более детально расположение программного кода рассмотрим в следующих уроках).

Программный код для платы Nucleo stm32f103:

 /* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(1000);

}
/* USER CODE END 3 */

Программный код для микроконтроллера stm32f411:

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000);
}
/* USER CODE END 3 */