include “stm32f1xx_hal.h”
include “cmsis_os.h”
include “task.h” /* RTOS task related API prototypes. */
UARTHandleTypeDef huart1; xQueueHandle uartqueue=0; void SystemClockConfig(void); static void MXGPIOInit(void); static void MXUSART1UARTInit(void); void StartDefaultTask(void const * argument); void sendstr1(void const * argument); void send2(void const * argument); void Sduart(void const * argument); int main(void) { HALInit(); SystemClockConfig(); MXGPIOInit(); MXUSART1UART_Init();uart_queue = xQueueCreate(11,sizeof(uint8_t *));
xTaskCreate((TaskFunction_t)send_str1,"string1",128,NULL,1,NULL);
xTaskCreate((TaskFunction_t)send2,"string2",64,NULL,1,NULL);
xTaskCreate((TaskFunction_t)Sd_uart,"Suart",64,NULL,2,NULL);
vTaskStartScheduler();
while (1)
{
}
}
void StartDefaultTask(void const * argument)
{
for(;;)
{
osDelay(1);
}
}
void sendstr1(void const * argument)
{
uint8t *dat=”Task1″;
for(;;)
{
xQueueSend(uart_queue,&dat,500);
GPIOA->ODR = 0x00000000;
taskYIELD();
}
}
void send2(void const * argument)
{
uint8t *dat=” Task2″;
for(;;)
{
xQueueSendToBack(uartqueue,&dat,500);
GPIOA->ODR = 0x00000020;
taskYIELD();
}
}
void Sduart(void const * argument)
{
TickTypet xLastWakeTime;
// Initialise the xLastWakeTime variable with the current time.
xLastWakeTime = xTaskGetTickCount();
uint8t *data;
for(;;)
{
if(xQueueReceive(uartqueue,&data,100))
{
HALUARTTransmit(&huart1,data,11,1000);} else { HALUARTTransmit(&huart1,”–“,2,1000); } vTaskDelayUntil(&xLastWakeTime,1000/portTICKRATEMS);
}
}
~~~~
and output is
~~~~
Task1 Task2 Task2Task1 Task2Task1 Task2Task1 Task2Task1 Task2Task1 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2 Task2
~~~~
plz help me with this.