После запуска Keil 5.18 появляется меню выбора типа используемого процессора:
После выбора процессора происходит сразу переход в Manage Run-Time Enviroiment:
и в папке, где был создан проект появляются файлы (в папке Debug находится файл Target_1_STM32F429ZITx.dbgconf):
Если, не производя никаких действий с окном, нажать ОК, то в папке проекта будет создана следующая структура каталогов:
и в папке проекта появляется папка RTE (с файлом RTE_Components.h):
Добавим с проект Keil RTX-RTOS
Нажимаем ОК и в папке проекта появляется следующая структура каталогов:
При щелчке по правой кнопке на папке Sourse Group 1 выбираем в меню Add New Item to Group "Sourse Group1"... В появившемся окне выбираем User Cjde Template - CMSIS_RTOS "main" function.
Переходим в Option For Target нажав и устанавливаем частоту кварца 8 МГц (как установлено на плате) на вкладе Target
и HSE_VALUE=8000000 на вкладке C/C++. В этом случае CPU clock будет установлена в 168 МГц в файле system_stmf4xx.c.
Теперь настраиваем Debug выбирем ST-Link Debugger
Включаем Trace Enable и выбираем Core Clock 168 MHz
Во вкладке Flash Sownload отмечаем Reset and Run (при этом программа после загрузки во флеш память будет сразу стартовать без необходимости нажатия на Reset)
Нажав перейдем к выбору Framework - Classic или STM32CubeMX. По ссылкам справа видно, что конфигурация Classic задается с помощью файла RTE_Device.h, а SRM32CubeMX с помощью STM32F4xx Hardware Abstraction Layer (HAL) Drivers. Выбираем Classic:
и по ссылкам в нижнем окне добавляем в проект необходимые файлы:
после этого в проекте появляются файлы ("ключиком" отмечены файлы, содержимое которых нельзя изменять)
При выборе в качестве среды разработки STM32CubeMX необходимо сначала установить STM32 CubeMX с соответствующим пакетом для семейства STM32F4. После выбора данной среды разработки:
получаем приглашение на запуск CubeMX для конфигурации проекта
запускаем CubeMX
Настраиваем проект на использование MDK-ARM V5
и создание в проекте раздельных файлов для периферии
добавляем в проект внешний кварц
и на вкладке Clock Configuration настраиваем систему тактирования
В STM32CubeMX необходимо установить System Tick Interrupt самый низкий приоритет (максимальный номер). Для этого в NVIC Configuration для System tick timer в Preemption Priority устанавливаем 15.
В папке установки Keil находятся примеры установки периферийных устройств Keil_v518/ARM/PACK/Keil/STM32F4xx_DFP/2.7.0/MDK/CubeMX/Documentation/cubem__c_m_s_i_s_driver.html.
Генерируем проект, - Project - Generate Code и открываем Keil
для сравнения показана структура проекта до создания проекта Cube Generator и после
В файле 'stm32fxxx_it.c' необходимо удалить процедуру прерывания SysTick_Handler, так как STM32CubeMX генерирует его повторно в Generate Code.
в сгенерированном проекте отсутствует RTOS Keil-RTX, устанавливаем ее.
Затем открываем RTX_Conf_CM.c из группы CMSIS. Выбираем в нем Configuration Wizard и делаем следующие изменения в Main Thread stack size [bytes] устанавливаем 1024 в строке RTOS Kernel Timer input clock frequency [Hz] устанавливаем нашу системную частоту 168000000.
В файл main.c вносим следующие изменения
/* USER CODE BEGIN Includes */
#include "cmsis_os.h" // ARM::CMSIS:RTOS:Keil RTX
/* USER CODE END Includes */
:
/* USER CODE BEGIN 0 */
extern uint32_t os_time;
uint32_t HAL_GetTick(void) { // Add HAL_GetTick function for STM32Cube HAL
return os_time;
}
/* USER CODE END 0 */
:
int main(void)
{
:
/* USER CODE BEGIN 1 */
osKernelInitialize (); // Initialize RTOS Kernel for setup
/* USER CODE END 1 */
:
/* USER CODE BEGIN 2 */
osKernelStart (); // Begin thread switching
/* USER CODE END 2 */
и запускаем компилирование проекта.
Комментариев нет:
Отправить комментарий