中级会员
- 积分
- 364
- 金钱
- 364
- 注册时间
- 2018-3-14
- 在线时间
- 126 小时
|
1金钱
怎样能一次把整个数组里的数都传输过去,然后通过串口打印,不知道改怎样改
#include "stm32f4xx.h"
#include "delay.h"
#include "key.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "usart.h"
#include "led.h"
#define KEY_TASK_PRIO 1
#define KEY_STK_SIZE 256
TaskHandle_t KEYTask_Handler;
void KEY_task(void *pvParameters);
#define USART_TASK_PRIO 2
#define USART_STK_SIZE 256
TaskHandle_t USART_Handler;
void USART_task(void *pvParameters);
QueueHandle_t Message_Queue; //DÅÏ¢¶óáD¾ä±ú
int main(void)
{
delay_init(168);
KEY_Init();
LED_Init();
uart_init(115200);
Message_Queue=xQueueCreate(2,sizeof(u8)); //′′½¨ÏûÏ¢Message_Queue,¶óáDÏî3¤¶èêÇ′®¿ú½óêÕ»o3åÇø3¤¶è
if(Message_Queue!=NULL)
{
//′′½¨KEY_taskèÎÎñ
xTaskCreate((TaskFunction_t )KEY_task,
(const char* )"KEY_task",
(uint16_t )KEY_STK_SIZE,
(void* )NULL,
(UBaseType_t )KEY_TASK_PRIO,
(TaskHandle_t* )&KEYTask_Handler);
//′′½¨USART_taskèÎÎñ
xTaskCreate((TaskFunction_t )USART_task,
(const char* )"USART_task",
(uint16_t )USART_STK_SIZE,
(void* )NULL,
(UBaseType_t )USART_TASK_PRIO,
(TaskHandle_t* )&USART_Handler);
vTaskStartScheduler(); //¿aÆôèÎÎñμ÷¶è
}
}
//KEY_taskoˉêy
void KEY_task(void *pvParameters)
{
u8 code[2]={1,0};
while(1)
{
xQueueSend(Message_Queue,&code,portMAX_DELAY);
GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
vTaskDelay(1000);
}
}
//USART_taskoˉêy
void USART_task(void *pvParameters)
{
u8 num;
while(1)
{
if(xQueueReceive(Message_Queue,&num,portMAX_DELAY)==pdPASS)
{
USART_SendData(USART2,num);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
谢谢你的回答,昨天已经解决了,可以写成xQueueCreate(1,sizeof(u8)*2),队列消息数目为1,每个消息大小为sizeof(u8)*2,然后接受的时候定义的num应该定义成等大的数组缓冲区
|