导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]禁止进程??[liufengzhong]

 *第48064篇: [转帖]禁止进程??

  
楼 主:liufengzhong 2014年8月31日15:14
 [转帖]禁止进程??

当我试图在startKIT运行下面的测试代码,我遇到一个问题。
调试与xTimecomposer是没问题的,但是从SPI闪存写测试代码的执行是NG。
(它不能与JTAG执行连接。)

[测试代码]

-----
#include     <xs1.h>    
#include     <stdio.h>    
#include     <platform.h>    
 
in  port DIGITAL_INPUT = XS1_PORT_32A;    //PORT 32A
port out led_d1 = XS1_PORT_1A;
port out led_d2 = XS1_PORT_1D;
 
void led_thread(chanend input_data1)
{
    unsigned busy_flg;
    int delay  = 1000;
 
    printf("LED thread start!!\n");
 
    input_data1 :>     busy_flg;
 
    while (1) {
        delay_milliseconds(delay);
        led_d2     <: 0;
        delay_milliseconds(delay);
        led_d2     <: 1;
    }
 
}
 
void port_inout(chanend input_data1){
 unsigned buf;
 
 printf("port_inout start!!\n");
 
 DIGITAL_INPUT :>     buf;
 input_data1     <: buf;
 
 led_d1     <: 1;
 
};
 
int main(void)
{
    chan input_data;
 
    par {
 
        led_thread(input_data);
        port_inout(input_data);
    }
 
    return 0;
}
 
---

我可以通过增加while(1)in port_inout而解决问题如下所示,总之,通过port_input结束任务引起的问题。


void port_inout(chanend input_data1){
 unsigned buf;
...
 led_d1     <: 1;
 
while(1); // Addition
 
};

我想要知道原因。
有人有一些想法吗?

谢谢。


回答:


当端口驱动高代码中没有while(1),端口将被驱动高和这将结束在逻辑核的范围,所以,当你在代码中加入while(1)你将能够看见LED改变状态。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]如何从界面找到一个服务功能的声明?

[下一篇主题]:[转帖]寻求建立一个AVB分组流媒体的视频编码