[转帖]禁止的进程??
当我在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