
#include"stm32f10x_lib.h"
//int main(void)
//{
//
// u32 *PAO3=(u32*)(0X42000000+(0X4001080C-0X40000000)*32+4*3);
//
// GPIOA->CRL=0X33333333; //低八位配置為推挽式輸出 頻率為50mhz
// GPIOA->CRH=0X44444444; //高八位配置為上拉輸入
// while(1)
// {
// if((GPIOA->IDR&0X0100)==0X0100)
// GPIOA->ODR=GPIOA->ODR|0X0001;
// else
// GPIOA->ODR=GPIOA->ODR&(-0X00);
//
// if((GPIOA->IDR&0X0200)==0X0200)
// GPIOA->ODR=GPIOA->ODR|0X0002;
// else
// GPIOA->ODR=GPIOA->ODR&(-0X00);
//
// if((GPIOA->IDR&0X0400)==0X0400)
// *PAO3=1;
// else
// *PAO3=0;
//
// if((GPIOA->IDR&0X0800)==0X0800)
// GPIOA->ODR=0X0008;
// else
// GPIOA->ODR=0X00;
// }
//}
// 位綁定后的函數(shù)
//#define GPIOA_ODR_A (0x40010800+0X0C)
//#define GPIOA_IDR_A (0x40040800+0X08)
//#define GPIOA_ODR_A (GPIOA_BASE+0X0C)
//#define GPIOA_IDR_A (GPIOA_BASE+0X08)
//
//#define GPIOB_ODR_A (GPIOB_BASE+0X0C)
//#define GPIOB_IDR_A (GPIOB_BASE+0X08)
//
//#define GPIOC_ODR_A (GPIOC_BASE+0X0C)
//#define GPIOC_IDR_A (GPIOC_BASE+0X08)
//
//#define GPIOD_ODR_A (GPIOD_BASE+0X0C)
//#define GPIOD_IDR_A (GPIOD_BASE+0X08)
//
//#define GPIOE_ODR_A (GPIOE_BASE+0X0C)
//#define GPIOE_IDR_A (GPIOE_BASE+0X08)
//
//#define BitBand(Addr,BitNum) *((volatile unsigned 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(void)
//{
// GPIOA->CRL=0X33333333; //低八位配置為推挽式輸出 頻率為50mhz
// GPIOA->CRH=0X44444444; //高八位配置為上拉輸入
//
// while(1)
// {
//// if((GPIOA->IDR&0X0100)==0X0100) GPIOA->ODR=GPIOA->ODR|0X0001;
//// else GPIOA->ODR=0;
//
// if(PAin(8)==1) PAout(0)=1;
// else PAout(0)=0;
//
// if(PAin(9)==1) PAout(1)=1;
// else PAout(1)=0;
//
// if(PAin(10)==1) PAout(2)=1;
// else PAout(2)=0;
//
// if(PAin(11)==1) PAout(3)=1;
// else PAout(3)=0;
//
// }
//
// return(1);
//
//}
#define GIPOA_IDR ( GPIOA_BASE + 0X08)
#define GIPOA_ODR ( GPIOA_BASE + 0X0C)
#define GIPOB_IDR ( GPIOB_BASE + 0X08)
#define GIPOB_ODR ( GPIOB_BASE + 0X0C)
#define GIPOC_IDR ( GPIOC_BASE + 0X08)
#define GIPOC_ODR ( GPIOC_BASE + 0X0C)
#define GIPOD_IDR ( GPIOD_BASE + 0X08)
#define GIPOD_ODR ( GPIOD_BASE +0X0C)
#define BitBound(Addr,BitNum) (*((volatile unsignedlong*)((Addr&0xF0000000)+0X2000000+((Addr&0xFFFFF)<<5)+(BitNum<<2))))
#definePAOut(n) BitBound(GIPOA_ODR,n)
#definePAIn(n) BitBound(GIPOA_IDR,n)
#definePBOut(n) BitBound(GIPOB_ODR,n)
#definePBIn(n) BitBound(GIPOB_IDR,n)
#definePCOut(n) BitBound(GIPOC_ODR,n)
#definePCIn(n) BitBound(GIPOC_IDR,n)
#definePDOut(n) BitBound(GIPOD_ODR,n)
#definePDIn(n) BitBound(GIPOD_IDR,n)
int main(void)
{
// GPIO_InitTypeDef GPIO_InitStructure;
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
// GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
//
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOB,&GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIOA->CRL=0X33333333;
GPIOA->CRH=0X44444444;
while(1)
{
if( PAIn(8) ==0) //PB12按下
PAOut(0) =0; //LED亮
else
PAOut(0) = 1;
if( PAIn(9) == 0)
PAOut(1) = 0;
else
PAOut(1) = 1;
if( PAIn(10) == 0)
PAOut(2) = 0;
else
PAOut(2) = 1;
}
}
這個函數(shù)好使
|