久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 25950|回復: 19
收起左側

STM32入門篇HAL庫GPIO使用注意事項

  [復制鏈接]
ID:309002 發表于 2018-4-16 09:41 | 顯示全部樓層 |閱讀模式
stm32資料
STM32l05x HAL庫使用注意事項
主講人:成沖

一、STM32L0xx_HAL_GPIO
(一)、引腳初始化函數 void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx,
GPIO_InitTypeDef *GPIO_Init);
    1、功能
①.對STM32中的某端口上的引腳進行初始化(設置引腳輸入輸出的連接關系)。
②.函數名(HAL_GPIO_Init ):HAL——硬件抽象層;GPIO——通用I/O口;Init——初始化。
③.參數1(GPIO_TypeDef  *GPIOx ):GPIO_TypeDef——包含I/O口所有寄存器的結構體名;*GPIOx——指向x I/O口的地址。
④.參數2(GPIO_InitTypeDef *GPIO_Init)
GPIO_InitTypeDef——包含I/O口所有參數的結構體名;*GPIO_Init——指向I/O口所有參數的地址。

2、GPIO_TypeDef結構體成員
typedef struct
{
  __IO uint32_t MODER; //模式寄存器
  __IO uint32_t OTYPER; //輸出類型寄存器
  __IO uint32_t OSPEEDR; //輸出速度寄存器
  __IO uint32_t PUPDR; //上拉/下拉寄存器
  __IO uint32_t IDR;  //輸入數據寄存器
  __IO uint32_t ODR;  //輸出數據寄存器
  __IO uint32_t BSRR; //置位/清除寄存器
  __IO uint32_t LCKR; //配置鎖定寄存器
  __IO uint32_t AFR[2]; //端口復用功能寄存器
  __IO uint32_t BRR;  //復位寄存器
}GPIO_TypeDef;
3、*GPIOx指向GPIO口的地址參數為:
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
    4、GPIO_InitTypeDef結構體成員
typedef struct
{
  uint32_t Pin; //①選定將被配置的GPIO引腳
  uint32_t Mode;   //②指定選定的引腳運行模式
  uint32_t Pull; //③指定選定的引腳上拉或下拉
  uint32_t Speed; //④指定選定的引腳速度
  uint32_t Alternate; //⑤復用功能連通選定的引腳
}GPIO_InitTypeDef;
     ①參數可以為:
#define GPIO_PIN_0                 //Pin 0 selected   
#define GPIO_PIN_1                 //Pin 1 selected
……
#define GPIO_PIN_15                //Pin 15 selected   
#define GPIO_PIN_All               //All pins selected
②參數可以為
#define  GPIO_MODE_INPUT        //浮空輸入模式
#define  GPIO_MODE_OUTPUT_PP    //通用推挽輸出模式
#define  GPIO_MODE_OUTPUT_OD    //通用開漏輸出模式
#define  GPIO_MODE_AF_PP        //復用功能推挽模式
#define  GPIO_MODE_AF_OD       //復用功能開漏模式
③參數可為:
#define  GPIO_NOPULL        //無上位或下拉  
#define  GPIO_PULLUP        //上拉                  
#define  GPIO_PULLDOWN      //下拉
④參數可為:
#define  GPIO_SPEED_FREQ_LOW             //最大速度0.4MHz
#define  GPIO_SPEED_FREQ_MEDIUM        //最大速度2MHz   
#define  GPIO_SPEED_FREQ_HIGH             //最大速度10MHz
#define  GPIO_SPEED_FREQ_VERY_HIGH //最大速度35MHz
    ⑤參數可為:
#define GPIO_AF0_EVENTOUT      // EVENTOUT 復用功能映射
#define GPIO_AF0_TIM21         // TIM21 復用功能映射   
#define GPIO_AF0_SPI1          // SPI1 復用功能映射     
#define GPIO_AF0_USART2        // USART2 復用功能映射   
#define GPIO_AF0_MCO           // MCO 復用功能映射      
#define GPIO_AF0_SWDIO         // SWDIO 復用功能映射   
#define GPIO_AF0_SWCLK         // SWCLK 復用功能映射
5、*GPIO_Init指向GPIO參數的地址
6、用法舉例
要求:將STM32引腳A0、A2端口設置為推挽輸出模式、輸出速度
10MHz。
HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef   GPIO_InitStruct; //定義一個結構體變量
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE(); //打開A端口時鐘
  /*Configure GPIO pin : PA0 PA2*/
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2; //選擇引腳
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //引腳工作模式
  GPIO_InitStruct.Pull = GPIO_NOPULL; //引腳上下拉電阻
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; //引腳輸出速度
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //調用引腳初始化程序
}
7、注意事項
        ①.輸出頻率高,噪聲大,功耗高,電磁干擾強;輸出頻率低,噪聲小,功耗低,電磁干擾弱;提高系統EMI(電磁干擾)性能;
        ②.上拉下拉選擇一定要根據外圍設備來選擇。
6、練習題
要求:將STM32引腳B5、B8、C1端口設置為開漏輸出模式、輸出速度2MHz,引腳B6端口設置為浮空輸入模式,引腳B7端口設置為推挽上拉輸出模式、輸出速度35MHz。

(二)、去掉初始化通用I/O外圍寄存器的值,重置為默認值函數, void
HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin)
    1、功能
①.對STM32中的某端口上的引腳重置為默認值(斷開引腳輸入輸出的連接關系)。
②.函數名(HAL_GPIO_DeInit ):HAL——硬件抽象層;GPIO——通用I/O口;DeInit——刪除初始化。
③.參數1(GPIO_TypeDef  *GPIOx ):GPIO_TypeDef——包含I/O口所有寄存器的結構體名;*GPIOx——指向x I/O口的地址。
④.參數2(uint32_t GPIO_Pin)GPIO_Pin——選定將被配置的GPIO引腳。
   
2、用法舉例
要求:將STM32引腳A0、A2設置為上電初始狀態
static void MX_GPIO_DeInit(void)
{
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_2);
}
3、注意事項
        ①.當引腳寄存器配置被鎖定后,任何修改寄存器值的操作都無效,只有重新上電后才能重新操作。

(三)、設置或者清除選定的端口引腳數據位,void         
HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,
GPIO_PinState PinState);   
    1、功能
①.在選擇的端口引腳上輸出高低電平。
②.函數名(HAL_GPIO_WritePin):HAL——硬件抽象層;
GPIO——通用I/O口;WritePin——寫引腳。
③.參數1(GPIO_TypeDef  *GPIOx ):GPIO_TypeDef——包含I/O口所有寄存器的結構體名;*GPIOx——指向x I/O口的地址。
④.參數2(uint32_t  GPIO_Pin)GPIO_Pin——選定將被配置的GPIO引腳。
⑤.參數3(GPIO_PinState  PinState)GPIO_PinState——通用I/O引腳狀態重定義結構體枚舉名;PinState——引腳狀態。

2、用法舉例
要求:將STM32端口A0引腳輸出低電平、A2引腳輸出高電平。
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef   GPIO_InitStruct; //定義一個結構體變量
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE(); //打開A端口時鐘
  /*Configure GPIO pin : PA0 PA2*/
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2; //選擇引腳
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //引腳工作模式
  GPIO_InitStruct.Pull = GPIO_NOPULL; //引腳上下拉電阻
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; //引腳輸出速度
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //調用引腳初始化程序
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); //設置A2引腳輸出高電平
}

(三)、讀取選定的端口引腳數據位,GPIO_PinState
HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)   
    1、功能
①.讀取選擇的端口引腳上電平狀態。
②.函數名(HAL_GPIO_ReadPin):HAL——硬件抽象層;GPIO——通用I/O口;ReadPin——讀引腳。
③.參數1(GPIO_TypeDef  *GPIOx ):GPIO_TypeDef——包含I/O口所有寄存器的結構體名;*GPIOx——指向x I/O口的地址。
④.參數2(uint32_t  GPIO_Pin)GPIO_Pin——選定讀取的GPIO引腳。

完整的pdf格式文檔51黑下載地址(共18頁):
STM32入門篇GPIO.pdf (295.23 KB, 下載次數: 257)
回復

使用道具 舉報

ID:292119 發表于 2018-4-26 20:17 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:292119 發表于 2018-4-26 20:17 | 顯示全部樓層
被扣了黑幣,不讓下載,傷心

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 黑幣已補 可能是遇到了高峰期

查看全部評分

回復

使用道具 舉報

ID:193681 發表于 2018-6-21 09:12 | 顯示全部樓層
從哪里找的這個資料啊,還有其他的嗎?
回復

使用道具 舉報

ID:86450 發表于 2018-9-12 18:16 | 顯示全部樓層

從哪里找的這個資料啊,還有其他的嗎?
回復

使用道具 舉報

ID:242300 發表于 2018-10-17 02:16 | 顯示全部樓層
好資料。我想問一下hal庫和標準庫可以混用嗎
回復

使用道具 舉報

ID:88852 發表于 2019-2-9 21:49 | 顯示全部樓層
謝謝!
回復

使用道具 舉報

ID:88852 發表于 2019-2-9 21:50 | 顯示全部樓層
好資料下載看看!!
回復

使用道具 舉報

ID:514287 發表于 2019-4-17 09:38 | 顯示全部樓層
謝謝你, 好資料剛好需要
回復

使用道具 舉報

ID:519799 發表于 2019-4-23 17:51 | 顯示全部樓層
謝謝您勒
回復

使用道具 舉報

ID:480013 發表于 2019-5-3 20:56 | 顯示全部樓層
這真是個好東西
回復

使用道具 舉報

ID:585106 發表于 2019-9-2 17:31 | 顯示全部樓層
好東西
回復

使用道具 舉報

ID:287310 發表于 2019-9-22 22:48 | 顯示全部樓層
感謝分享!
回復

使用道具 舉報

ID:614352 發表于 2019-9-23 10:43 | 顯示全部樓層
感謝分享。。。。。。
回復

使用道具 舉報

ID:615693 發表于 2019-9-24 15:17 | 顯示全部樓層
好資料
感謝分享!
回復

使用道具 舉報

ID:461436 發表于 2019-10-27 16:04 | 顯示全部樓層
下載了,東西不錯,想問樓主還有相關的資料嗎?求分享,謝謝
回復

使用道具 舉報

ID:279632 發表于 2020-3-11 17:22 | 顯示全部樓層
寫的不錯,很好  
回復

使用道具 舉報

ID:710940 發表于 2020-3-18 15:52 | 顯示全部樓層

好資料下載看看!!
回復

使用道具 舉報

ID:818111 發表于 2020-9-12 07:47 | 顯示全部樓層

好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:630238 發表于 2020-9-16 08:53 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美三级电影在线播放 | 性高湖久久久久久久久3小时 | 黄色一级大片在线免费看产 | 国产激情偷乱视频一区二区三区 | 成人欧美一区二区 | aaaa日韩| 91在线成人 | 精品一区二区三区四区五区 | 日本精品久久 | 国产成人免费观看 | 日日夜夜视频 | 日本精品视频 | 久久久久久久久精 | 在线男人天堂 | 日韩中文一区二区三区 | 日韩一区不卡 | 伊人精品| 91麻豆精品国产91久久久资源速度 | 97色在线观看免费视频 | www.日韩免费| 亚洲一区二区三区在线播放 | 日韩综合在线 | 久久久久一区二区三区四区 | 国产精品免费看 | 九九精品在线 | 久久黄色 | 亚洲欧美一区二区三区在线 | 欧美日韩国产一区二区三区 | 亚洲成人播放器 | 午夜看电影在线观看 | 亚洲一区二区在线视频 | 久久骚| 国产精品美女在线观看 | 一级黄色片在线看 | 亚洲精品电影网在线观看 | 五月激情婷婷在线 | 国产毛片毛片 | 国产精品a久久久久 | 日韩精品久久久久 | 国产精品视频不卡 | 久99久视频 |