Всем здравствуйте, возникла проблема с подключением freeRTOS ОС на мк STM32H743IIT6.
Решил поставить две простые задачи для ОС, это постоянное мерцание светодиодом и включение/выключение вторым светодиодом с кнопки.
Написал код, пересмотрел много видеороликов, по каждым из них от начала до конца подключался, и эффекта никакого, РТОС просто буд-то не существует, прошу помощи, код main.c прилагаю.
Может что-то дополнительно необходимо подключать, или код в другом месте прописывать, или с частотами дорабатывать в клок-конфигураторе, я буду рад любой помощи!
Сократил некоторые void функции.
#include "main.h"
#include "cmsis_os.h"
uint8_t k=0;
osThreadId defaultTaskHandle;
osThreadId LED1Handle;
osThreadId LED2Handle;
osThreadId ButtonHandle;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void StartDefaultTask(void const * argument);
void vLED1(void const * argument);
void vLED2(void const * argument);
void vButton(void const * argument);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
osThreadDef(LED1, vLED1, osPriorityIdle, 0, 128);
LED1Handle = osThreadCreate(osThread(LED1), NULL);
osThreadDef(LED2, vLED2, osPriorityIdle, 0, 128);
LED2Handle = osThreadCreate(osThread(LED2), NULL);
osThreadDef(Button, vButton, osPriorityIdle, 0, 128);
ButtonHandle = osThreadCreate(osThread(Button), NULL);
osKernelStart();
}
void SystemClock_Config(void)
static void MX_GPIO_Init(void)
void StartDefaultTask(void const * argument)
{
for(;;)
{
osDelay(1);
}
}
void vLED1(void const * argument)
{
for(;;)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);
osDelay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
}
}
void vLED2(void const * argument)
{
for(;;)
{
if(k==1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
}
else if(k==0)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);
}
}
}
void vButton(void const * argument)
{
for(;;)
{
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_SET)
{
while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_SET)
{
vTaskDelay(50);
}
k=1;
}
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET)
{
while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET)
{
vTaskDelay(50);
}
k=0;
}
osDelay(100);
}
}
void Error_Handler(void)
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
#endif