gpt4 book ai didi

c - 嵌入式系统中的AT命令

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:38 25 4
gpt4 key购买 nike

我正在使用嵌入式 C 并尝试为 GPRS 终端申请。我的主要问题是使用 AT 命令。我使用串行线发送 AT 命令,但如果它是一些面向网络的命令,它的响应可能需要时间,因此我有很多等待,而处理器什么都不做。想法是让这个等待以相同的方式并行完成,就像在不同的线程中一样。有谁知道如何去做,因为我的系统不支持线程? 我想使用一些计时器,因为我们有每 5 毫秒调用一次的中断,但我不知道我必须等待多少秒才能响应,如果我比较中断中的字符串以检查是否收到所有消息,它可以效率很低,对吧?

最佳答案

您可以使用中断,将串行接口(interface)配置为在数据可用时中断,或者使用 RTOS 之类的东西,例如 FreeRTOS , 运行两个线程,一个用于主代码,另一个阻塞并等待串行数据。

更新:根据你的评论,你说你不知道数据的大小,没关系,在中断处理程序中检查终止数据的字节,这是一个简单而通用的 example 你应该检查你的 MCU 的例子:

void on_serial_char()
{
//disable interrupts
disable_interrupts();

//read byte
byte = serial.read();

//check if it's the terminating byte
if (byte == END) {
//set the flag here
MESSAGE_COMPLETE = 1;
}

//add byte to buffer
buf[length++] = byte;

//enable interrupts
enable_interrupts();
}

然后在主循环中检查该标志:

...
if (MESSAGE_COMPLETE) {
//process data
...

//you may want to clear the flag here
MESSAGE_COMPLETE = 0;

//send next command
...
}

关于c - 嵌入式系统中的AT命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com