我正在研究一个有两个内核的嵌入式MCU,它们都可以看到从0x80000000开始的内存区域.
ADC连接到一个内核,无线电连接到另一个内核.我想将ADC接收的数据值写入该存储器地址,以便其他内核可以读取它.
有人能帮我弄明白怎么做吗?没有微操作系统,它是裸机.
我会在特定地址创建一个指向struct的指针吗?
我在数组中有两个值,如何将它们放入结构中?
#define NUM_SAMPLES_POLLED (2)
uint16_t samples_polled[NUM_SAMPLES_POLLED]
Run Code Online (Sandbox Code Playgroud) 下面是switch语句中的一些代码.getvalue()返回一个unsigned long.有人可以解释为什么value是按位的0xffffffff.mcu是32位.
#define WriteMemory(A,V) *(volatile unsigned long*)(A)=(V)
static unsigned value;
case 'b':
value = getvalue();
value &= 0xffffffff;
WriteMemory(2147455555, value);
break;
Run Code Online (Sandbox Code Playgroud) 我正在努力改进我的嵌入式编码实践.下面的代码将值0写入内存位置0x80001000.
#define MemoryWrite(A,V) *(volatile unsigned long*)(A)=(V)
#define FLAG 2147487744 //0x80001000
uint32_t reset_value = 0;
int main(void)
{
MemoryWrite(FLAG, reset_value);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
为了使用MemoryWrite我必须转换0x80001000为的宏2147487744.我认为这使得代码不清楚.有没有办法只使用十六进制值才能做到这一点?
我定义reset_value为uint32_t.如果我使用它会改变什么#define?