⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
gert186
离线
最后看到:1年5个月前
加入:2016-04-21 59
存储问题

你好,

我已经写了一个代码样本P00, P01, P02 ADC值。

此代码由无编码的AT+TMRSTART=0,0,1触发

代码看起来像:

else if (user_compare_cmd(“TMRSTART”、3、3))

Uint8_t timer_id = ahtoi((char*)argument_array[0]);
Uint8_t index = ahtoi((char*)argument_array[1]);
times_seconds = ahtoi ((char *) argument_array [2]);

如果(指数= = 0)
codeless_env。咯[timer_id] = app_easy_timer (ahtoi ((char *) argument_array [2]), throw_command0);
Else if(index == 1)
codeless_env。咯[timer_id] = app_easy_timer (ahtoi ((char *) argument_array [2]), throw_command1);
其他的
user_reply (tempstr假);
如果(指数< 4)
user_reply (tempstr,真实);

/ /输入插脚
GPIO_ConfigurePin((GPIO_PORT)0, (GPIO_PIN)0, INPUT, PID_GPIO, false);
GPIO_ConfigurePin((GPIO_PORT)0, (GPIO_PIN)1, INPUT, PID_GPIO, false);
GPIO_ConfigurePin((GPIO_PORT)0, (GPIO_PIN)2, INPUT, PID_GPIO, false);

/ / ADC INIT

adc_init (GP_ADC_SE, 0, 0);

在回调代码中:
空白throw_command0 ()

codeless_env。suppress_response = true;
adc_enable_channel (0);
adc_get_sample ();
int length = (ADC_values_1) / (ADC_values_1[0]) / (ADC_values_1[0]) / (ADC_values_1[0]);
For (int I = 0;我<长度;我+ +){
adc_enable_channel (0);
adc_get_sample ();
ADC_values_1[我]= adc_get_sample ();
adc_enable_channel (1);
adc_get_sample ();
ADC_values_2[我]= adc_get_sample ();
adc_enable_channel (2);
adc_get_sample ();
ADC_values_3[我]= adc_get_sample ();

For (int I = 0;我<长度;我+ +){
arch_printf(“%,%,% \ r \ n”,ADC_values_1[我],ADC_values_2[我],ADC_values_3[我]);

codeless_env。咯[0]= app_easy_timer (times_seconds throw_command0);
codeless_env。suppress_response = false;

Timer在回调函数中重新启动自身。

它可以正常工作一段时间,然后程序崩溃。

数组是全局定义的:
int ADC_value_1 [30];

如果我调试它与IDE Keil运行它可能存储将满或adc停止工作?
你知道问题出在哪里吗?

Arch_printf()导致了这个问题!

致以最亲切的问候
哥特

设备:
IM_Dialog
离线
最后看到:两个月四个星期前
加入:2016-12-06 22:25
嗨gert186,

嗨gert186,

我建议使用调试器来找出代码崩溃的位置。如果您能找到导致问题的代码行,我们应该能够提供进一步的帮助。

致以最亲切的问候

IM_Dialog

gert186
离线
最后看到:1年5个月前
加入:2016-04-21 59
我使用调试器!但是,

我使用调试器!但问题是,Uart2回调函数不再到达:
静态uart_callback(uint8_t res)
这个函数或多或少地删除缓冲区。

如果你在循环中调用arch_printf()。代码会杀死自己。我不知道为什么!

致以最亲切的问候
哥特

MHv_Dialog
离线
最后看到:三个月两个星期前
工作人员
加入:15 2013-12-06
嗨,哥特,

嗨,哥特,

我想知道你向UART发送了多少字节。显然,每10毫秒调用一次计时器函数。你正在接近57k6比特/秒的UART比特率吗?

如果你只发送一个字符作为实验,代码会运行吗?

/ MHv