11.13/14 理解SDK框架遇到的问题

1.1.浮点数打印问题

  float red_increment = (target_red_value - initial_red_value) / STEPS;

 u8 STEPS = 100;

printf("绿色值每一次增量------%f\n", red_increment);

后面三个参数均为u8类型

希望采用 %f打印出每次的步进值。但是结果为空白

希望采用 %.2f打印出每次的步进值。但是结果为空白

希望采用 %df打印出每次的步进值。但是结果为0

 单片机不要使用浮点数或者浮点打印,大部分单片机不支持,通常用不上,运算资源占用大,

解决,一起运算

2:app_task_get_msg()函数调用参数问题

定义

//app消息获取接口(block参数为0表示内部pend,1直接返回)

void app_task_get_msg(int *msg, int msg_size, int block);

2.1 app_task_get_msg()参数初始化类型问题

在这个上电任务中,调用了app_task_get_msg()这个app消息发送函数,传入的参数为整形数组int msg[32]的首地址msg。

传入的参数这个为什么定义为数组msg[32],定义为其他。例如直接定义为指针变量int *msg然后调用app_task_get_msg(msg, ARRAY_SIZE(msg), 1);可行吗

2.1 解决

msg[32]是提供给app_task_get_msg()用的缓存,任何数据都需要缓存,而这个函数设计者可能处于安全考虑,不提供内部缓存地址供外部使用,设计了由外部提供缓存来保存这些数据。

2.2 app_task_get_msg()参数赋值问题

我搜索原SDK代码。并未发现有对该参数进行赋值,那么这里的msg[0]又该如何判断是否为APP_MSG_SYS_EVENT这个变量所对应的值呢?

2.2 解决

 msg[0][1]是官方提供的用法,不需要纠结为什么,只需要默认规定这些用法就行,而且正常开发也不需要理会这里,只要能用就行

3.蓝牙和串口的引脚的初始化在哪,源码里没找到。

有很多东西,是不需要知道他具体是怎么实现的,只要能用,输入和输出知道就行(一般SDK里都会有官方调用的代码做参考),就当他是个黑匣子就行

猜你喜欢

转载自blog.csdn.net/qq_51519091/article/details/134378356