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

* 108044: [转帖]禁止的进程??

   liufengzhong 
liufengzhong发表的帖子 

 [转帖]禁止的进程??
当我在startkit中尝试下面的代码时候我遇到一个问题。

用xTimecomposer调试是OK的,但是从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改变状态。

发表时间:2014年8月4日17:11:39

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:[转帖]已执行的user_program.xe在哪里?我想知道在X-core基本原理。. /P P
[下一篇帖子]:[转帖]有可能永久地保存数据(保存传感器读数)在startkit?我把startkit在建一个模型。