STM32_上位机高效通信技术

系列文章第一篇链接:STM32_编程入门_stm32编程-CSDN博客

 

目录

正文


正文

拿一个.h文件 专门定义一个宏 (ObVar.h)

形如

#define OBSERVE_VARIABLE_feddyx 0
#define OBSERVE_VARIABLE_feddyy 1
#define OBSERVE_VARIABLE_fFtvx 2
#define OBSERVE_VARIABLE_fFtvy 3
#define OBSERVE_VARIABLE_fCtvx 4
#define OBSERVE_VARIABLE_fCtvy 5
#define OBSERVE_VARIABLE_fGyrox 6
#define OBSERVE_VARIABLE_fGyroy 7
#define OBSERVE_VARIABLE_fEnconderx 8
#define OBSERVE_VARIABLE_fEncondery 9

该.h文件是可解析的。

初始化时,用一个数组存储所有可能被观测变量的地址,这并按上述宏定义一一映射

这样就建立数字和地址之间的映射。

float * OBSERVE_VARIABLE_ADDR[10];
void OBSERVE_VARIABLE_ADDR_INIT(void){
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_feddyx] = &feddyx;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_feddyy] = &feddyx;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fFtvx] = &fFtvx;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fFtvy] = &fFtvy;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fCtvx] = &fCtvx;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fCtvy] = &fCtvy;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fGyrox] = &fGyrox;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fGyroy] = &fGyroy;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fEnconderx] = &fEnconderx;
	OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_fEncondery] = &fEncondery;
}

用一个数组来记录需观测的8通道的上位机要观测的变量的索引值

int OBSERVE_VARIABLE_Index[8];

上位机通过解析.h宏文件,即可获得所有可观测变量的变量名,以及对应的索引值。 当要查看某个变量的时候,就可以发送该变量的索引值到STM32,STM32根据索引值,访问 OBSERVE_VARIABLE_ADDR数组,就能得到指定的变量的地址。直接从地址里拿数据往Buffer里面放。

		for(i = 0; i < 8; i++){
			memcpy((unsigned char *)(AngelaSendTypeBBuffer+4+4*i),	...
            ... (unsigned char *)OBSERVE_VARIABLE_ADDR[OBSERVE_VARIABLE_INDEX[i]],	4);
		}

假设我要让我的6通道显示fFtvy的数据, 我们上位机通过对 .h (ObVar.h) 文件的解析,能获得fFtvy对应的地址映射是3。那么上位机现在就会往STM32发送一个 6 和 3过来, 6表示通道,3表示地址。

那么 OBSERVE_VARIABLE_Index[5](5 :通道号 - 1) 将被赋值为 3;

OBSERVE_VARIABLE_ADDR[ OBSERVE_VARIABLE_INDEX[5] ] 等于 OBSERVE_VARIABLE_ADDR[3 ]等于&fFtvy

通过这样的方式,就得到了变量:fFtvy的值。

我简直就是个小天才。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖上都叫我秋博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值