STM32实现位绑定遇见的难题,请各路大神支支招
源程序如下:
#include<stm32f10x.h>
#include<stdio.h>
#define GPIOA_ODR_A (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A (GPIOA_BASE+0x08)
#define GPIOB_ODR_B (GPIOB_BASE+0x0C)
#define GPIOB_IDR_B (GPIOB_BASE+0x08)
#define GPIOC_ODR_C (GPIOC_BASE+0x0C)
#define GPIOC_IDR_C (GPIOC_BASE+0x08)
#define GPIOD_ODR_D (GPIOD_BASE+0x0C)
#define GPIOD_IDR_D (GPIOD_BASE+0x08)
#define GPIOE_ODR_E (GPIOE_BASE+0x0C)
#define GPIOE_IDR_E (GPIOE_BASE+0x08)
#define GPIOE_ODR_F (GPIOF_BASE+0x0C)
#define GPIOE_IDR_F (GPIOF_BASE+0x08)
#define GPIOE_ODR_G (GPIOG_BASE+0x0C)
#define GPIOE_IDR_G (GPIOG_BASE+0x08)
#define BitBand(Addr,BitNum) *((volatile unsigned long *)(((Addr&0xF0000000)+0x02000000)+((Addr*0xfffff) << 5)+(BitNum << 2)))
#define PAout(n) BitBand(GPIOA_ODR_A,n)
#define PAin(n) BitBand(GPIOA_IDR_A,n)
#define PBout(n) BitBand(GPIOB_ODR_B,n)
#define PBin(n) BitBand(GPIOB_IDR_B,n)
#define PCout(n) BitBand(GPIOC_ODR_C,n)
#define PCin(n) BitBand(GPIOC_IDR_C,n)
#define PDout(n) BitBand(GPIOD_ODR_D,n)
#define PDin(n) BitBand(GPIOD_IDR_D,n)
#define PEout(n) BitBand(GPIOE_ODR_E,n)
#define PEin(n) BitBand(GPIOE_IDR_E,n)
#define PFout(n) BitBand(GPIOF_ODR_F,n)
#define PFin(n) BitBand(GPIOF_IDR_F,n)
#define PGout(n) BitBand(GPIOG_ODR_G,n)
#define PGin(n) BitBand(GPIOG_IDR_G,n)
int main(void)
{
u32 *PA3 = (u32 *)(0x42000000+(0x1080C<<5)+(3<<2));
u32 *PA11 = (u32 *)(0x42000000+((0x40010808-0x40000000)<<5)+(11<<2));
GPIOA->CRL = 0x33333333;
GPIOA->CRH = 0x44444444;
while(1)
{
if(PAin(12)== 1) PAout(4) = 1;
else PAout(4) = 0;
if(*PA11 == 1) *PA3 = 1;
else *PA3 = 0;
}
// return(1);
}
void SystemInit()
{
}
其中的if(PAin(12)== 1) PAout(4) = 1;
else PAout(4) = 0;
语句的功能无法实现,请各位大神支支招,小弟刚开始学习;