|
楼主 |
发表于 2019-6-14 22:38:06
|
显示全部楼层
我试了一下,貌似STM32中我见到的所有变量都能这样做:(以下代码已经编译通过了,下载后输出也没问题)
u32 SRAMA,SRAMB;
u32 *SRAMA0,*SRAMA1,*SRAMB0,*SRAMB1;
u32* get_bit_of_adrs (u32 *adrs_ram,u8 n)
{
u32 adrsout=0;
adrsout=0x22000000+((u32)(adrs_ram -0x20000000)<<5)+(n*4);
return (u32*)adrsout;
}
SRAMA0=get_bit_of_adrs(&SRAMA,0);
SRAMA1=get_bit_of_adrs(&SRAMA,1);
SRAMB0=get_bit_of_adrs(&SRAMB,0);
SRAMB3=get_bit_of_adrs(&SRAMB,3);
*SRAMA0=*SRAMA1;
*SRAMA1=*SRAMB3;
看起来STM32极有可能是全部SRAM区域都可以这么做的
通过这个函数直接就可以获得特定位的地址,在定义一个数组或者特殊数据处理缓冲区的时候,应该可以发挥很大的作用。 |
|