日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32——库函数开发小结

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32——库函数开发小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

STM32——庫函數開發小結


宗旨:技術的學習是有限的,分享的精神是無限的。


基本上所有外設都有以下幾類寄存器:【CR/DR/SR

(1)控制寄存器 xxx_CR(Control/Configuration Register):這類寄存器是用來配置、控制 相應 外 設 的 工 作 方 式 的 。 如 GPIOx_CRL、GPIOx_CRH, AFIO_EXTICR1~AFIO_EXTICR4,串口的 USART_CR1~USART_CR3等。

(2)數據寄存器 xxx_DR(Data Register):這類寄存器主要是存儲了外設進行輸出輸入的數據。如 GPIOx_IDR、GPIOx_ODR、USART_DR 等。

(3)狀態寄存器 xxx_SR(Status Register):這類寄存器主要存儲了當前外設的運行狀態,主要為一些標志位。如 USART_SR、ADC_SR等。

一、初始化

GPIO_InitTypeDef型的 GPIO_InitStructure 用來配置 GPIO;

NVIC_InitTypeDef型的 NVIC_InitStructure 用來配置 NVIC;

EXTI_InitTypeDef型的 EXTI_InitStructure 用來配置 EXTI;

USART_InitTypeDef型的 USART_InitStructure 用來配置 USART。

初始化結構體的控制參數,一般就是與相應外設的控制寄存器 xxx_CR 對應的。

使用ST庫對外設進行初始化,一般有以下步驟:

1)定義一個xxx_InitTypeDef類型的初始化結構體。

2)根據使用需求,向這些初始化結構體的成員寫入特定的控制參數。

3)填充好結構體之后,把這個結構體作為輸入參數調用相應的外設庫函數xxx_Init(),從而實現向寄存器寫入控制參數,并配置好外設。

?????? 如ADC_InitTypeDef, ADC_Init() , I2C_InitTypeDef ,I2C_Init() 等。它們的應用方法都是相同的,區別在于不同的外設其結構體成員不一樣,可輸入參數相應也不同。

?

二、數據的輸入輸出

?????? 對外設的使用,一般涉及其輸入和輸出數據。如GPIO 的 輸入輸出 函 數: GPIO_ReadOutputDataBit()、GPIO_ReadInputData()、GPIO_SetBits();還有USART 的收發數據函數:USART_ReceiveData()、USART_SendData(),這類函數都是用于控制輸入輸出數據的。這些函數控制相應外設數據寄存器 DR 的內容,達到控制輸入輸出的目的。

1)通過輸入參數,向函數指定要使用的是什么外設,如用(GPIOAGPIO_Pin_5)選定PA5進行控制,用(USART1)來指定使用串口1外設。

2)若向外輸出數據,則調用Output Send函數,把將要輸出的數據變量作為函數的輸入參數。

3)若為接收外部數據,則調用ReadReceive函數,讀取函數的返回值來得到外部輸入數據。對于其他外設,也有類似的控制數據輸入輸出函數。如用ADC_GetConversionValue()函數來獲取ADC轉換所得到的數值;用I2C_SendData()函數來使用I 2 C接口進行發送數據。

?

三、狀態位、標志位

? ? ? ? ?xxx_GetFlagStatus() 或 xxx_GetITStatus(),功能分別為獲取事件標志位狀態和中斷標志位狀態。xxx_ClearFlag() 或 xxx_ClearITPendingBit() 函數,功能分別為清除事件標志位和清除掛起的中斷標志位。這四類函數都是對應到外設的 xxx_SR 寄存器的。

?

四、外設函數分類

函數名

功能

輸入參數

返回值

具體函數舉例

XXX_Init()

對外設進行初始化

XXX_InitTypeDef初始化類型結構體

void

GPIO_Init()

USART_Init()

XXX_DeInit

以系統默認的形式對外設進行初始化

將要進行默認初始化的外設名

void

USART_DeInit()

I2C_DeInit()

XXX_StructInit()

以默認數據填充初化結構體

將要進行默認填的xXX_InitTypeDef初始化類型結構體

void

GPIO_StructInit()

XXX_SendData()

使用外設發送數據

XXX(相應的外設名);將要發送的數據

void

USART_SendData()

I2C_SendData()

XXX_ReceiveData()

獲取外接收到的數據

XXX(相應的外設名)

返回接收到的數據

USART_ReceiveData()

I2C_ReceiveData()

XXX_GetFlagStatus()

檢查外設事件標志位

要檢查的事件標志名

返回標志位狀態(SET或ESET)

USART_GetFlagStatus()

SDIO_GetFlagStatus()

XXX_GetITStatus()

檢查中斷標志

要檢查的中斷標志名(大部分跟事
件標志相同)

返回標志位狀態 (SET或RESET)

USART_GetITStatus()

I2C_GetITStatus()

XXX_ClearFlag()

清除事件標志位

要清除的事件標志名

void

USART_ClearFlag() RTC_ClearFlag()

XXX_ClearITPendingBit()



清除掛起的中斷標志位

要檢查的中斷標志名(大部分跟事件標志相同)

void

USART_ClearITPendingBit()

RTC_ClearITPendingBit()

XXX_ITConfig()

設置外設的中斷

XXX(相應外設的名字);選擇要開啟外設的某種中斷(如接收中斷,發送完成中斷);ENABLE 或DISABLE 中斷

void

USART_ITConfig()

ADC_ITConfig()

XXX_Cmd()

使能或關閉外設

要 配 置 的 外 設名;ENABLE 或DISABLE

void

USART_Cmd()

TIM_Cmd()

XXX_DMACmd()要

配置外是否可 使用DMA 請求

配置的外設名;選擇要配置DMA 請求 (DMA 接收請求,DMA 發 送 請求);ENABLE 或
DISABLE

void

USART_DMACmd()

SDIO_DMACmd()

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的STM32——库函数开发小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。