Tag: 嵌入式

如何在C中刷新UDP套接字的输入缓冲区?

如何在C中清除UDP套接字的输入缓冲区(如果存在这样的东西)? 我正在使用嵌入式Linux环境并使用C来创建一些本机应用程序。 这些嵌入式计算机中有几台位于同一网络上,当其中一台事件发生时(让我们称之为WHISTLE-BLOWER),WHISTLE-BLOWER应该向网络广播地址发送网络消息,以便所有机器都在网络(包括WHISTLE-BLOWER)知道事件并根据它执行一些操作。 我顺便使用UDP套接字…… 这是它的伪代码: main { startNetworkListenerThread( networkListenerFunction ); while( not received any SIGTERM or such ) { localEventInfo = checkIfTheLocalEventOccured(); broadcastOnNetwork( localEventInfo ); } } networkListenerFunction { bindSocket; while( not SIGTERM ) { // THIS IS WHERE I WANT TO FLUSH THE RECV BUFFER… recv_data = recvfrom( socket ); if( validate recv data […]

如何通过微处理器/微控制器同时检测两个或多个按键(GPIO)?

正如问题所述,我想知道控制器是否可以同时检测到两个按钮按下。 我是控制器编程的新手,从基础开始 – 闪烁LED,然后移动到按钮,现在尝试按下按钮。 当两个按钮被按在一起时,我想设置一些标志 。 但据我所知,在这种情况下只会调用一个ISR,从而检测到一次按下。 我们怎样才能做到这一点…… (在某些电子设备中,当我们按下某些按钮时它具有特定的function,例如当同时按下3个适当的按钮时重置电话) 梅西

使C源代码中的大常量更具可读性?

我正在研究微处理器的一些代码。 它有一些大的关键常数。 #define F_CPU 16000000UL 在这种情况下,这是CPU频率。 在赫兹。 事实上,如果没有在数字上手动标记光标,则很难判断它是1,600,000,160,000,000还是16,000,000。 如果我将逗号放在#define F_CPU 16,000,000UL的数字中,它会截断常量。 我使用了一些具有特定数字分隔符的深奥语言,旨在使大数字更具可读性(ex 16_000_000 ,主要是用于MCU的语言)。 大型“神奇数字”在嵌入式内容中相当普遍,因为它们需要描述MCU如何与现实世界对话。 在C中有这样的东西吗?

嵌入式C中的动态内存分配

我可以在嵌入式C中使用malloc和delete函数吗? 例如,我有一个函数,其中在函数malloc的结构上创建了指针。 这个函数在ram中返回地址,我可以使用它。 退出我的function,在那里分配了内存,这个指针将被删除或者这个内存为此保留,而不会被函数删除终止? Typedef struct { Char varA; Char varB } myStruct ; Void myfunc ( void) { myStruct * ptrStruct = ( myStruct *) malloc ( sizeof (myStruct)) ; // Code here //…….. return ; }

是否可以将整个数组保存在cpu寄存器中

在下面的代码中, int main( ) { register int arr[4]; /* … */ } 是否有可能在某些cpu寄存器中分配’arr’。 (考虑cpu有4个或更多寄存器)。 或者编译器会忽略数组的寄存器存储类。

嵌入式C中的源代码,用于无符号整数到字符串

没有使用标准库utoa,我正在寻找utoa的源代码,所以我可以为特定项目定制它。 我有无符号整数(32位),输出如0xFFFF_FFFF 我也在寻找二进制格式的无符号整数和半字到字符串的源代码。

C指针与结构的直接成员访问

假设我有一个类似以下的结构…… typedef struct { int WheelCount; double MaxSpeed; } Vehicle; …我有一个这种类型的全局变量(我很清楚全局变量的缺陷,这是一个嵌入式系统,我没有设计,为此他们是一个不幸但必要的邪恶。 )直接或通过指针访问结构的成员是否更快? 即 double LocalSpeed = MyGlobal.MaxSpeed; 要么 double LocalSpeed = pMyGlobal->MaxSpeed; 我的任务之一是简化和修复最近inheritance的嵌入式系统。

嵌入式应用的测试代码

背景: 我正在利用Atmel AVR atmega2560开发一个大型项目。 该项目包含许多基于硬件的function(7个SPI设备,2个I2C,2个RS485 MODBUS端口,大量模拟和数字I / O)。 我为所有这些设备开发了“驱动程序”,它们为主应用程序循环提供了访问所需数据的接口。 题: 我正在开发的项目最终必须符合SIL标准。 我希望能够测试代码并提供良好的代码覆盖率。 但是,我无法找到任何信息让我开始研究如何设置这样的测试框架。 我的想法是,我可以拥有一套自动化测试,可以测试未来的错误修复和function添加,以确定它们是否会破坏代码。 问题是我不明白如何在芯片上测试代码。 我是否需要硬件来监控设备上的I / O并模拟外部连接的设备? 任何可以提供的指针都将受到高度赞赏。 –Steve

低内存条件下的LZW压缩/解压缩

任何人都可以指出如何在低内存条件下(<2k)实现lzw压缩/解压缩。 那可能吗?

嵌入式处理器的快速斜边算法?

是否有一个聪明/有效的算法来确定角度的斜边(即sqrt(a² + b²) ),在没有硬件乘法的嵌入式处理器上使用定点数学运算?