找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2299|回复: 5
收起左侧

stm32程序出现错误警告,是宏定义不起作用的原因吗?

[复制链接]
ID:606493 发表于 2020-4-18 16:35 | 显示全部楼层 |阅读模式
写了一个stm32f10x的关于位绑定的程序,但是一直出现错误警告,跟人感觉是宏定义不起作用的原因,但是不知道问题出现在哪里
/*******************程序**********************/
/******************************************************
SRAM区 0x2000 0000 ~ 0x200f ffff 1M
AliasAddr = (0x22000000 + (A-0x2000 0000)*8+n)*4
     = 0x22000000 + (A-0x2000 0000)*32+n*4
片上外设0x4000 0000 ~ 0x400 ffff 1M
AliasAddr = 0x42000000 + ((A-0x4000 0000)*8+n)*4
     = 0x42000000 + (A-0x4000 0000)*32+n*4
******************************************************/
#include <stm32f10x.h>
#define GPIOA_ODR_A (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A (GPIOA_BASE+0x08)
#define BitBand(Addr,BitNum) *((volatile unsignede long *)(Addr&0xf0000000(0x2000000 + (Addr&0xfffff)<<5+BitNum<<2)))//位绑定公式
#define PAout(n) BitBand(GPIOA_ODR_A,n)
#define PAin(n) BitBand(GPIOA_IDR_A,n)
int main()
{
u32 *PA03 = (u32 *)(0x42000000 + (0x4001080C-0x40000000)*32+3*4);
u32 *PAI11 = (u32 *)(0x42000000 + (0x40010808-0x40000000)*32+11*4);
//也可以写为u32 *PAI11 = (u32 *)(0x42000000 + (0x40010809-0x40000000)*32+3*4);
GPIOA->CRL = 0X33333333;
GPIOA->CRH = 0X44444444;
while(1)
{
  //A = GPIOA_BASE+ODR偏移地址=GPIOA_BASE+0x0C  n=3
  //A = GPIOA_BASE+IDR偏移地址=GPIOA_BASE+0x08  n=11
  if(*PAI11 == 1)
   *PA03 = 1;
   //GPIOA->ODR = GPIOA->ODR | 0x80;
  else
   *PA03 = 0;
   //GPIOA->ODR = GPIOA->ODR & (~0x80);
  if(PAin(9) == 1)
    PAout(1) = 1;
  else
    PAout(1) = 0;
}
}

Q22G[]L`DSK(LD9U_JEHU@U.png
R]O(EZ~3C%PAJG_J%(4(KPB.png

回复

使用道具 举报

ID:77479 发表于 2020-4-19 10:58 | 显示全部楼层
可能是编译器的头文件设置路径
回复

使用道具 举报

ID:732603 发表于 2020-4-19 11:42 | 显示全部楼层
没有包含相应的头文件或者没有再头文件中声明
回复

使用道具 举报

ID:592807 发表于 2020-4-19 13:27 | 显示全部楼层
网上找个有PAin(n)的函数看看
回复

使用道具 举报

ID:606493 发表于 2020-4-21 15:09 | 显示全部楼层
shuxinglong 发表于 2020-4-19 11:42
没有包含相应的头文件或者没有再头文件中声明

为什么要在头文件中声明,我直接在程序开头进行宏定义了
回复

使用道具 举报

ID:311846 发表于 2020-4-21 18:19 | 显示全部楼层
用不了寄存器么?为啥用地址?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表