找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3429|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

奮斗stm32開發(fā)板學(xué)習(xí)日記6—庫函數(shù)開發(fā)小結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
                  回顧之前的教程, 主要寫了GPIO點(diǎn)燈, EXTI按鍵中斷, USART串口通信,通過這幾個(gè)實(shí)驗(yàn),筆者已經(jīng)能總結(jié)出用ST庫開發(fā)的步驟和共同點(diǎn)了。那么接下來就來談?wù)勊麄兊墓餐c(diǎn)。
初始化:
翻看前面筆者寫過的例程,不難發(fā)現(xiàn)我們?cè)谑褂眠@些外設(shè)之前,總要先定義一個(gè)結(jié)構(gòu)體,然后給該結(jié)構(gòu)體中的相關(guān)參數(shù)賦值。先看看之前都用了哪些結(jié)構(gòu)體:
  • GPIO_InitTypeDef形的結(jié)構(gòu)體用來配置GPIO外設(shè)
  • EXTI_InitTypeDef形的結(jié)構(gòu)體用來配置按鍵等其他的外部中斷
  • NVIC_InitTypeDef形的結(jié)構(gòu)體用來配置總中斷管理器。
  • USART_InitTypeDef形式結(jié)構(gòu)體用來配置串行口相關(guān)參數(shù)。
可能有人要問, 之前自己在學(xué)51時(shí),直接配置相關(guān)寄存器就行了,在stm32開發(fā)中,是不是就不需要配置寄存器,直接通過填充結(jié)構(gòu)體就可以了呢?其實(shí)不然。我們可以在相關(guān)初始化函數(shù)上右擊鼠標(biāo),選擇Go to Definition, 便可以一目了然。例如GPIO_Init這個(gè)函數(shù),
如圖,

該函數(shù)會(huì)將之前填充的相關(guān)結(jié)構(gòu)中參數(shù)寫入GPIO中BRR, BSRR, CRH寄存器中:

而這幾個(gè)寄存器正是配置stm32的pin口speed,mode。有時(shí),如果我們不懂結(jié)構(gòu)中相關(guān)參數(shù)在對(duì)應(yīng)寄存器中的意思時(shí),可以通過查詢《stm32手冊(cè)》來查找其參數(shù)意義。
因此在使用st庫對(duì)外設(shè)進(jìn)行初始化,一般的步驟如下:
  • 定義一個(gè)xxx_InitTypeDef類型的初始化結(jié)構(gòu)體,
  • 根據(jù)使用需求,向這些結(jié)構(gòu)體中寫入特定的控制參數(shù),
  • 填充好結(jié)構(gòu)體,把這個(gè)結(jié)構(gòu)體作為函數(shù)xxx_Init()的參數(shù)進(jìn)行傳遞。寫入對(duì)應(yīng)的寄存器        中。
數(shù)據(jù)輸入與輸出:
在按鍵試驗(yàn)中,我們用了GPIO_ReadInputData()函數(shù)來讀取按鍵輸入pin口的電平。同樣也可以用GPIO_ReadOutputData()函數(shù)來讀取pin口的輸出值, 說道著這里,想必大家知道這兩個(gè)函數(shù)的重要性,有了這兩個(gè)函數(shù),就可以讓MCU做一些邏輯任務(wù)了。同樣,在在串口通信中,用了USART_SendData與UART_ReceiveData來通過串口收發(fā)數(shù)據(jù)。
標(biāo)志位的檢查與清除:
當(dāng)外設(shè)完成了某些工作或出現(xiàn)某些狀態(tài)的時(shí)候,會(huì)觸發(fā)一些事件, 同時(shí)在相關(guān)寄存器中標(biāo)志位就會(huì)被置位,例如,在USART通信中,當(dāng)數(shù)據(jù)接收或者發(fā)送完成后,都會(huì)觸發(fā)一個(gè)中斷一個(gè)事件,并且進(jìn)入同一中斷服務(wù)程序中,這時(shí)候,檢查標(biāo)志位就很重要了,如果要確定是否為接收數(shù)據(jù)引發(fā)的中斷,此時(shí)就可以用USART_GetITStatus來檢查他的TXNE位是否被置位,具體如圖所示:

接收位標(biāo)志位的清除可以有兩種方法第一是當(dāng)你用軟件讀取USART_DR寄存器時(shí),便可以完成RXNE的清除,同時(shí)也可以通過軟件對(duì)它寫0也可以清除。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表