【问题积累】rtt 不同线程使用静态变量数据突变

问题描述

再调试的是否发现数据会有突变的问题,表现比较明显的是这个 POWER字段异常:

// 分装数据打印
[1047245]: app_cod1 [ 24 ]: cmd: 2, PORT1: uID[1]:3069039912, seq:[ s: 54, c: 54 ], power:252
// 发送缓存打印 (此处66 突变为 54)
[1047248]: r_PORT1: uID[1]:3069039912, seq[r:66 c:4294967295, d:54], qid[r:2111062540 c:2111062540] 
           clone:0, ack:0, power:1, q_t:1, ans:1

实际上函数调用的地方如下:

/*******************************************************************************
* Function Name : spi_rcmd_dtq_answer_data
* Description : 处理答题器提交上来的按键数据
* Input : port : SPI 端口号
* Output : None
* Return : None
*******************************************************************************/
int8_t spi_rcmd_dtq_answer_data(uint8_t port, uint8_t upos, spi_pac_t *rpac)
{
  int8_t ret = 1;
  /* 提取核心数据 */
  uint32_t uID = *(uint32_t *)(rpac->Data + 7);
  uint32_t rev_seq = arr_pos_u32(rpac->Data + 23);
  uint32_t cur_seq = *(uint32_t *)(port_tcb[port].dtq[upos].ans_rid);
  uint32_t rev_qid = *(uint32_t *)(rpac->Data + 3);
  uint32_t cur_qid = *(uint32_t *)(port_tcb[port].dtq_tcb.ans_info.q_tcb[upos].qid);
  uint32_t ack_seq = arr_pos_u32(rpac->seqid);
  uint8_t is_clone_dev = rpac->seqid[0] & 0x80;
  uint8_t is_ack = ram_tab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值