1. 程式人生 > >STM32F103的PC13、PB3和PB4定義為普通IO口使用

STM32F103的PC13、PB3和PB4定義為普通IO口使用

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PC13初始化:
PC13的.c檔案初始化:
void GPIO_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC| RCC_APB2Periph_AFIO, ENABLE);//使能PORTC口時鐘 
        BKP_TamperPinCmd(DISABLE);//關閉入侵檢測功能,也就是PC13,可以當普通IO使用
        BKP_ITConfig(DISABLE);    //這樣就可以當輸出用。

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  //最低速率2MHz
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC,GPIO_Pin_13);    //輸出1
}
PC13在.h檔案的定義:
//IO方向設定
#define     GPIOC13_IO_IN()               {GPIOC->CRH &= 0xFF0FFFFF;GPIOC->CRH|= 0xFF8FFFFF;}
#define     GPIOC13_IO_OUT()           {GPIOC->CRH &= 0xFF0FFFFF;GPIOC->CRH|= 0xFF3FFFFF;}

//IO操作函式   
#define     GPIOC13_OUT    PCout(13) //資料埠PC13
#define     GPIOC13_IN        PCin(13)   //資料埠PC13 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GPIOB3、GPIOB4的.c檔案初始化:
void GPIO_Init(void)
{
      GPIO_InitTypeDef  GPIO_InitStructure;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |  RCC_APB2Periph_AFIO, ENABLE);//使能PORTB口時鐘、複用引腳PB3、PB4引腳
      GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  //關閉JTAG,SWD可以除錯的
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOB, &GPIO_InitStructure);

      GPIO_SetBits(GPIOB,GPIO_Pin_3);    //輸出1   
      GPIO_SetBits(GPIOB,GPIO_Pin_4);    //輸出1    
}

PB3、PB4在.h檔案的定義:
//IO方向設定
#define    GPIOB3_IO_IN()       { GPIOB->CRL &= 0xFFFF0FFF;GPIOB->CRL|= 0xFFFF8FFF;}   
#define    GPIOB3_IO_OUT()   {GPIOB->CRL &= 0xFFFF0FFF;GPIOB->CRL |= 0xFFFF3FFF;}    
////IO操作函式   
#define   GPIOB3_OUT    PBout(3) //資料埠PB3                                                                                                       
#define   GPIOB3_IN        PBin(3)  //資料埠PB3                                                                                                   

//IO方向設定
#define    GPIOB4_IO_IN()       {GPIOB->CRL &=  0xFFF0FFFF;GPIOB->CRL |=  0xFFF8FFFF;}
#define    GPIOB4_IO_OUT()   {GPIOB->CRL &=  0xFFF0FFFF;GPIOB->CRL |=  0xFFF3FFFF;}
////IO操作函式   
#define    GPIOB4_OUT    PBout(4) //資料埠PB4                     
#define    GPIOB4_IN        PBin(4)  //資料埠PB4