哈爾濱匯豐電子科技有限公司!
led
打開客服菜單
熱門關鍵詞 : 12V調速器 12V調速器
新聞動態
當前位置: 什么股票配资 > 公司動態 > GPIOSTM32F103VE
GPIOSTM32F103VE
發布時間 : 2019-10-10 19:24 瀏覽量 : 1

STM32F103VE


void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
{
  uint32_t tmpreg = 0x00;
  /* Check the parameters */
  assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
   
  tmpreg = AFIO->EVCR;
  /* Clear the PORT[6:4] and PIN[3:0] bits */
  tmpreg &= EVCR_PORTPINCONFIG_MASK;
  tmpreg |= (uint32_t)GPIO_PortSource << 0x04;
  tmpreg |= GPIO_PinSource;
  AFIO->EVCR = tmpreg;
}

#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) ||
                                    ((PERIPH) == GPIOB) ||
                                    ((PERIPH) == GPIOC) ||
                                    ((PERIPH) == GPIOD) ||
                                    ((PERIPH) == GPIOE) ||
                                    ((PERIPH) == GPIOF) ||
                                    ((PERIPH) == GPIOG))
                                    
GPIO_InitTypeDef GPIO_LED;
GPIO_LED.GPIO_Mode=GPIO_Mode_OUT;//模式
GPIO_LED.GPIO_OType=GPIO_OType_OD;//
GPIO_LED.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;相關引腳
GPIO_LED.GPIO_PuPd=GPIO_PuPd_NOPULL;//上啦模式
GPIO_LED.GPIO_Speed=GPIO_Low_Speed;//速度
涉及到的寄存器,每組GPIOx,16pin:4個32位配置寄存器,每個PIN角2位,不進行設置均有復位值,對應為復位狀態
GPIOx_MODER:模式寄存器,模式包括---輸入模式(復位)、通用輸出模式、復用功能模式、模擬模式
GPIOx_OTYPER:輸出類型寄存器,類型包括---推挽輸出(復位)、開漏輸出
GPIOx_OSPEEDR:輸出速度寄存器,速度包括---低速、中速、高速、最高速,不同GPIO組復位值不一樣
GPIOx_PUPDR:端口上拉/下拉寄存器,---無上拉或下拉、上拉、下拉、保留,不同GPIO組復位值不一樣
2個32位數據寄存器,每個PIN腳1位
GPIOx_IDR:端口數據輸入寄存器,高16位保留,使用低16位
GPIOx_ODR:端口數據輸出寄存器,高16位保留,使用低16位
1個32位置位/復位寄存器,
GPIOx_BSRR:高16位負責16個pin腳復位,寫0不對輸出數據寄存器 GPIOx_ODR進行任何操作,寫1對GPIOx_ODR相應位復位;低16位同理,但功能是置位
1 個 32 位鎖定寄存器,(不常用)
GPIOx_LCKR:每個鎖定位凍結一個特定的配置寄存器(控制寄存器和復用功能寄存器)。功能感覺不常用,用到再查。
2 個 32 位復用功能選擇寄存器
GPIOx_AFRL:低位復用功能寄存器,低8個PIN腳復用功能配置,每個PIN腳4位,復用功能AF0-AF15
GPIOx_AFRH:高位復用功能寄存器,高8個PIN腳復用功能配置,每個PIN腳4位,復用功能AF0-AF1
所有GPIO函數
/* 一,初始化函數*********************************/
/* Function used to set the GPIO configuration to the default reset state ****/
1.void GPIO_DeInit(GPIO_TypeDef* GPIOx);不常用
功能:通過使能失能AHB1總線時鐘設置配置寄存器為默認值,此時各個PIN腳為復位狀態,當GPIO_Init設置為復位狀態時,則GPIO_Init可以被次函數替代,否則不能用此函數。
參數:GPIOx GPIOA~GPIOE,其他系列更多或更少端口組
涉及寄存器:RCC->RCC->AHB1ENR 時鐘使能失能寄存器
 /* Initialization and Configuration functions *********************************/
2.void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);常用,配合GPIO_InitTypeDef結構體使用
功能:設置配置寄存器為特定值,各個PIN腳狀態自定義。
參數:GPIOx GPIOA~GPIOE,其他系列更多或更少端口組
    GPIO_InitStruct  GPIO_InitTypeDef結構體類型的指針地址
涉及寄存器:GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR即上述的4個32位配置寄存器
3.void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);不常用
功能:設置GPIO_InitTypeDef結構體為默認值,并不涉及實際模式設置
參數:GPIO_InitStruct  GPIO_InitTypeDef結構體類型的指針地址
涉及寄存器:不涉及
4.void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:鎖定位凍結一個特定的配置寄存器(控制寄存器和復用功能寄存器)
參數:GPIOx GPIOA~GPIOE,其他系列更多或更少端口組
   GPIO_Pin GPIO_Pin GPIO_Pin_0~GPIO_Pin_15 或者GPIO_Pin_All或者任意幾個腳相或
涉及寄存器:GPIOx_LCKR
 /* GPIO操作寄存器 **********************************************/
 /* GPIO Read and Write functions **********************************************/此部分見函數名即可理解,不分析
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
參數:
涉及寄存器:GPIOx_IDR
/*****************************/
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
功能:
參數:
涉及寄存器:GPIOx_IDR
/*****************************/
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
參數:
涉及寄存器:GPIOx_ODR
/*****************************/
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
功能:
參數:
涉及寄存器:GPIOx_ODR
/*****************************/
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
參數:
涉及寄存器:GPIOx_BSRR
/*****************************/
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
參數:
涉及寄存器:GPIOx_BSRR
/*****************************/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
功能:但不知道reset還是set,可以直接用次函數寫0或寫1
參數:BitVal: Bit_RESET或0,Bit_SET或1
涉及寄存器:GPIOx_BSRR
/*****************************/
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
功能:
參數:
涉及寄存器:GPIOx_ODR
/*****************************/
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:特定腳數據翻轉,使用位異或GPIOx->ODR ^= GPIO_Pin; 實現,原理是任何數(0,1)和0相異或保持不變,和1相異或翻轉
參數:
涉及相關寄存器:GPIOx->ODR
/* GPIO Alternate functions configuration function ****************************/
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
/* 寫函數 ****************************/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_BIT_ACTION(BitVal));
 
  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRR = GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = GPIO_Pin;
  }
}


標簽:
cache
Processed in 0.004763 Second.
{ganrao}