在线时间28 小时
UID3427315
注册时间2017-9-28
NXP金币0
该用户从未签到
注册会员

- 积分
- 108
- 最后登录
- 2019-3-4
|
本帖最后由 凉粥凉的 于 2018-7-4 16:22 编辑
各位大牛,我用的是K64,是用FlexBus来检测开入信号DI原理图如下:其中DI_OE是接的FB_CS1
程序如下:
void task_di(uint32_t initial_data)
{
uint16_t rdata = 0x0000;
uint32_t i;
uint32_t DI_OUT[20];
flexbus_init();
while(1)
{
_lwevent_wait_for(&lwevent_group, event_di, FALSE, NULL);
rdata=0x0000; //clear data variable;
rdata=(*(uint16_t*)(&DI_START_ADDRESS)); //read
printf("RAM 16 bit ADDR: 0x%08x READ: 0x%04x\r\n",&DI_START_ADDRESS ,rdata);
for(i=0;i<16;i++)
{
DI_OUT=rdata%2;
rdata /= 2;
printf("%x",DI_OUT);
}
_int_disable();
printf("bbbbbbbbbbbbbbbb");
_lwmsgq_send(send_queue,DI_OUT,LWMSGQ_SEND_BLOCK_ON_FULL);
printf("aaaaaaaaaaaaaaaa");
_int_enable();
_lwevent_clear(&lwevent_group,event_di);
}
}
串口调试结果如图:
其中
_lwmsgq_send(send_queue,DI_OUT,LWMSGQ_SEND_BLOCK_ON_FULL); 没有执行。
想请教一下,怎样将DI_OUT通过_lwmsgq_send()显示出来
lwmsgq的设置应该是正确的,我的开出任务中是能正常显示的。 rdata=(*(uint16_t*)(&DI_START_ADDRESS)); //read
rdata究竟保存的是什么?是十六个二进制0或1吗,还有如果我想读单个如FB_AD30的电平,该怎么办?
最佳答案
但从代码来说rdata保存的是16 位数据,读取地址是你自己设置的,没办法读取地址的
|
|