Tag: 微控制器

如何使用GCC编译器强制执行struct bit顺序?

我想知道是否有一个GCC C编译器指令允许我确定结构打包的位顺序? 喜欢的东西: #pragma bit_order left 这种需求的基本原理是我有以下结构: struct { union { unsigned char BYTE; struct { unsigned char B0: 1; unsigned char B1: 1; unsigned char B2: 1; unsigned char B3: 1; unsigned char B4: 4; }BIT; }ITEM; } myStruct; 有了这个结构,我希望编译器以这种方式打包: Bit order: | 7 6 5 4 3 2 1 0 | Label: |B0 […]

如何强制在C中强制使用未被优化的未使用内存?

微控制器通常需要读取寄存器以清除某些状态条件。 在C中是否有可移植的方式来确保如果不使用数据则不会优化读取? 指向内存映射寄存器的指针是否足以声明为volatile? 换句话说,以下是否始终适用于标准兼容编译器? void func(void) { volatile unsigned int *REGISTER = (volatile unsigned int *) 0x12345678; *REGISTER; } 我知道处理这样的function会遇到编译器相关的问题。 所以,在这种情况下,我对便携式设备的定义有点松散。 我只是说它会尽可能广泛地使用最流行的工具链。

微控制器C代码的unit testing模式

虽然有很多unit testing框架支持C,但我对如何为微控制器代码编写unit testing感到有些困难(在我的情况下是PIC,但我认为这个问题比这更普遍)。 为微控制器编写的大部分代码都围绕将配置和数据值写入寄存器,从寄存器读取输入数据以及响应中断事件。 我想知道是否有人可以提供一些最有效的方法指针。

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

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

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

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