请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMDSEVM6678 工具/软件:TI-RTOS
您好!
在另一个任务中引用时、难以使另一个任务中的全局变量集处于正确的值。 这与 e2e.ti.com/.../367224上的存档帖子类似。
我尝试过使用静态和易失性关键字、但没有结果。 我正在尝试使用 UART 将文件发送到电路板进行处理、并在完成后返回给发起方。
下面列出了有问题的代码。 在全局变量 g_UART_Handle 和 buffPointer 下面的代码中、跨任务保留其正确的值、但 outputData 不保留。 如果有任何帮助,将不胜感激。
/*
@file main.c
*
*创建日期:2019年1月3日
* 作者:Damian Oslebo
*
/
#include
#include
#include
#include
/* BIOS 头文件*/
#include
#include
#include "stdio.h"
#include "stdint.h"
#include "stdlib.h"
#include "string.h"
/* UART 头文件*/
#include
#include
#include
/*我的标题*/
#include "Constants.h"
#include "RedundantWaveletTransform.h"
/*函数声明*/
typedef enum taskID{task_start、task_end、task_RWT}taskID;
void Board_initUART (void);
void UART_transfer_start (UARG 0、UARG arg1);
void ARarg0、UARG0 (void Rarg_RWT) UARg arg1);
void UART_transfer_end (UARg arg0、UARg arg1);
void queue_task (taskID);
// Constants *
/#define XMITTER_RDY 123
//全局变量*/
UART_Handle G_UART_Handle;
/*静态易失性*/字符 buffPointer[buffer_size << 2];
静态易失性浮点 outputData[NUM_STACTOR][buffer_size];
int main (void)
{
/*呼叫板初始化函数*/
Board_initUART();
queue_task (task_start);
/*启动 BIOS */
BIOS_start();
返回(0);
}//* main */
void queue_task (taskID)
{
Task_Handle 任务;
ERROR_Block EB;
Task_Params tskParams;
tskParams.priority = 1;
ERROR_INIT (&EB);
Task_Params_init (&tskParams);
switch (id)
{
案例 Task_start:
任务= Task_create (uart_transfer_start、&tskParams、&EB);
中断;
案例 Task_end:
任务= Task_create (uart_transfer_end、&tskParams、&EB);
中断;
案例 Task_RWT:
任务= Task_create (uart_transfer_end、&tskParams、&EB);
中断;
默认值:
中断;
}
if (task =NULL){
System_printf ("Task_create() failed!\n");
BIOS_exit (0);
}
}
void Board_initUART (void)
{
board_initCfg boardCfg;
UART_Params 参数;
boardCfg = Board_init_module_clock;
board_init (boardCfg);
UART_INIT();
UART_PARAMS_INIT (params);
params.baudrate = 115200;
params.writeDataMode = UART_DATA_BINARY;
params.readDataMode = UART_DATA_BINARY;
Params.readReturnMode = UART_return_full;
params.readEcho = UART_ECHO_OFF;
G_UART_Handle = UART_open (UART_Instance、params);
如果(!g_uart_handle){
System_printf ("UART 未打开");
}
}/* Board_initUART */
void UART_transfer_start (UARg arg0、UARg arg1)
{
char start_token = XMITTER_RDY;
int32_t databufferSize = buffer_size << 2;
memset (buffPointer、0、databufferSize);
UART_writePolling (g_UART_Handle、&start_token、1);
databasufferSize = UART_readPolling (g_UART_Handle、buffPointer、databasufferSize);
queue_task (task_RWT);
}/* UART_transfer_start */
void UART_transfer_end (UARg arg0、UARg arg1)
{
char start_token = XMITTER_RDY;
浮点值;
int32_t index、index2;
UART_writePolling (g_UART_Handle、&start_token、1);
/*此分配将起作用,因为在同一个任务中?
for (index = 0;index < buffer_size;index++)
{
outputData[0][index]= 3.2f;
}
*
for (index = 0;index < NUM_STOPENS;index++)
{
for (index2 = 0;index2 < buffer_size;index2++)
{
value = outputData[index][index2];
UART_writePolling (g_UART_Handle、&value、4);
}
}
// UART_TRANSFER_END */
void PERIT_RWT (UARg arg0、UARg arg1)
{
int32_t 索引;
for (index = 0;index < buffer_size;index++)
{
outputData[0][index]= 3.2f;
}
queue_task (task_end);
}//* perte_rWT */
