u32 *PAO3=(u32 *)(0x42000000+(0x4010080C-0x40000000)*32 +3*4) 我这句话是不是哪里有错误啊
答案:2 悬赏:0 手机版
解决时间 2021-02-14 03:48
- 提问者网友:黑米和小志
- 2021-02-13 22:38
顺便请大神解释下
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-02-13 22:47
没错。stm32的位绑定呢吧。
0x4010080C 是GPIOA的ODR的基地址。至于-4000000这个是取偏移地址。*32是 按以下公式得到的((Adress-0x40..)+8+位)*4 得到的。32位,,, 8是指8个bit 4是每个地址的位置。也就是 1位和2位的差别是8 .然后前面是声明一个指针。可以理解为 内存的位置或是内存的id号。然后,每次读写就是读这块区域。下面使用方法是 *PAO3=1或0 即可下面我送你的一些地址。可以根据规律算出 pc pd pe等。
#define PA 0x40010800;
#define PAL 0x40010800;
#define PAH 0x40010804;
#define PAI 0x40010808;
#define PAO 0x4001080C;
#define PABSR 0x40010810;
#define PABR 0x40010814;
#define PALCK 0x40010818;
#define PB 0x40010C00;
#define PBL 0x40010C00;
#define PBH 0x40010C04;
#define PBI 0x40010C08;
#define PBO 0x40010C0C;
#define PBBSR 0x40010C10;
#define PBBR 0x40010C14;
#define PBLCK 0x40010C18;
0x4010080C 是GPIOA的ODR的基地址。至于-4000000这个是取偏移地址。*32是 按以下公式得到的((Adress-0x40..)+8+位)*4 得到的。32位,,, 8是指8个bit 4是每个地址的位置。也就是 1位和2位的差别是8 .然后前面是声明一个指针。可以理解为 内存的位置或是内存的id号。然后,每次读写就是读这块区域。下面使用方法是 *PAO3=1或0 即可下面我送你的一些地址。可以根据规律算出 pc pd pe等。
#define PA 0x40010800;
#define PAL 0x40010800;
#define PAH 0x40010804;
#define PAI 0x40010808;
#define PAO 0x4001080C;
#define PABSR 0x40010810;
#define PABR 0x40010814;
#define PALCK 0x40010818;
#define PB 0x40010C00;
#define PBL 0x40010C00;
#define PBH 0x40010C04;
#define PBI 0x40010C08;
#define PBO 0x40010C0C;
#define PBBSR 0x40010C10;
#define PBBR 0x40010C14;
#define PBLCK 0x40010C18;
全部回答
- 1楼网友:封刀令
- 2021-02-14 00:22
也许是的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯