5个职位/ 0个新职位
最后发表
jamesleo-konka
离线
最后看到:4年3个月前
加入:2017-01-22 02:42
system_init某些指令被阻塞?

嗨,对话框中,
在hrp_sensor工程中,初始化在system_init中执行。
//----------------------------------------
static void system_init(void *pvParameters)

OS_TASK处理;
无符号字符d;
i2c_device开发;

#如果定义CONFIG_RETARGET / / <——CONFIG_RETARGET已经定义,为了使用printf
外面的空白retarget_init(无效);
# endif
....
....

printf("BLE hrp demo" NEWLINE);

dev = ad_i2c_open (MAX30100);/ /——初始化I2C设备 ----------------------

MAX30100_reset (dev);
d = MAX30100_read (dev, MAX30100_PART_ID);
printf(换行符" ID = % 02 x”一部分,d);//<- 这里就是奇怪的地方了,运行程序,这一句的内容可以正确打印出来, 但是下一句就没有打印出来
d = MAX30100_read (dev, MAX30100_REVISION_ID);
printf(换行符“修订ID = % 02 x”,d);//<- 这里没有打印出来。。。直到用手机对等了设备,这一句才开始打印出来

//设置LED电流
MAX30100_setLEDs (dev, i11 i8);
....
....
//----------------------------------------------------------------

说明:所有的printf语句,I2C设备的操作程序,都是OK的,除了开始被阻塞的现象以外。
后台是如何阻塞的?
有什么解决办法?I2C要改为同步模式?(目前采用的是ad_i2c_read, ad_i2c_write函数,貌似是异步的…)

谢谢

关键词:
设备:
Qinjiny_Dialog
离线
最后看到:2个月2周以前
工作人员
加入:2016-11-01 05:47
有尝试调试模式下一行行跟一下代码跑到这边的具体情况吗

有尝试调试模式下一行行跟一下代码跑到这边的具体情况吗?

jamesleo-konka
离线
最后看到:4年3个月前
加入:2017-01-22 02:42
嗨Qinjiny_Dialog,

嗨Qinjiny_Dialog,
没有去跟踪代码调试、没搞清楚什么时候系统会睡觉。。。
整个程序的架构是,在同行后,对心率服务启用通知之后,hrp_sensor_task里面为循环的几个具体的执行代码就被激活了。
开始这个地方为啥printf只打印了一句,真是没想的通。难道system_init没有执行完,就睡啦?不太对。。。

Qinjiny_Dialog
离线
最后看到:2个月2周以前
工作人员
加入:2016-11-01 05:47
询问了一下同事,可以尝试一下在每一行打印之后加一行

询问了一下同事,可以尝试一下在每一行打印之后加一行

。fflush(stdout);

来尝试强制把输出缓冲区里的信息刷出来

kingwheat
离线
最后看到:1年2个月前
加入:2016-12-08 09:21
你好,

你好,
尝试下,每次答应结束的时候,加上结束符\ n