單片機零基礎學習之從“點燈”入門STM32


  本篇文章通過一個簡單的例子來熟悉模塊化編程以及利用庫函數的方法進行開發使用STM32外設的基本流程。

  首先,我們打開本講的例程,在工程目錄我們可以看到驅動分組下有 led、delay 兩個.c源文件,其實,它們對應的還有兩個頭文件,它們就保存在我們的 DRIVER 文件夾下的 inc 文件夾中,同理,源文件就保存在 src 文件夾中。

  我們在源文件里定義相關的函數,然后在對應的頭文件里聲明它,最后我們在想要調用此函數的源文件中包含該頭文件即可,這就是模塊化編程。這樣做的好處就是代碼整體框架結構清晰明了,便於我們進行后期維護與移植。

  因此,這個知識點希望大家能夠掌握。

  下面我們就開始具體講解如何驅動我們實驗平台上的用戶指示燈。首先,我們要明白,點燈它的本質是通過控制GPIO引腳這個基礎外設輸出高低電平,從而達到燈亮滅的效果,那么大家可能就要問了,之前說過,可以配置使用的通用 GPIO 引腳有37個,這么多GPIO口,我們該使用哪個呢?

  通過觀察下圖,我們可以發現,用戶燈的一端是與主控芯片的 PC13 這個引腳電氣相連的,因此我們就是要配置這個管腳輸出高低電平,那么究竟是那種電平會使燈變亮呢?這時就要看我們的驅動電路了,其實也很簡單,用戶燈其實就是個發光二極管 ,既然是二極管,那么它就具有單向導電性 ,它的正極 接了3.3V電壓,我們需要點亮它就需要在負極輸出低電平,也就是 PC13 這個引腳得輸出低電平。

  

 

  同理,燈滅就得輸出高電平。

  接下來,我們回到工程中通過實例來了解 STM32基礎外設使用的基本流程,首先我們用到了 GPIO 這個外設。因此,在工程中我們要添加 GPIO 這個外設的庫函數,添加的方法這里再給大家演示一下。添加它是為了用於后面的初始化調用,接着新建兩個文件,一個是用戶燈源文件,一個是對應的頭文件,分別命名為 led.c、led.h,保存在驅動文件夾下的src、inc 文件夾中,同時不要忘了將 led.c源文件添加到工程中來,接下來,就可以在 led.c中編寫相關驅動函數了。

  在今天的實驗中,所需編寫的函數比較簡單,就一個初始化函數,首先,我們定義一個 函數名,這個不能和庫函數的函數名一樣,否則會報錯,這里取這個名字就可以,接着看函數主體,首先得定義一個GPIO的結構體變量,用於初始化結構體成員,(這個可以直接在 GPIO_Init 庫函數里復制),接着很重要的一點就是我們要開啟 GPIOC 這個口的時鍾,否則它是不會工作的,開啟它的時鍾,我們直接調用庫函數里的 RCC_APB2PeriphClockCmd 這個函數即可,接下來就是初始化 GPIO 的成員變量了,引腳選擇 GPIO_Pin_13 這個引腳,模式選擇 推挽輸出模式,速度選擇 50MHz 就可以了,最后 完成 GPIO_Init函數的初始化就可以了。接下來,我們一上電為了不讓燈亮,就調用了 GPIO_SetBits 這個函數就可以了。然后不要忘了在 led.h中聲明這個函數。

  為了使用戶燈達到閃爍的效果,就需要加入延時,於是利用相同的方法新建delay.c、delay.h 兩個文件,不要忘了也必須加入到工程中來,然后再delay.c中編寫一個簡單的計數延時函數就可以了,同理也需要將它聲明在 delay.h中。

  最后,在主函數中,我們先調用 LED的初始化函數,然后在 while(1) 死循環中調用 GPIO_ResetBits 這個函數點亮 led,在調用自己編寫的延時函數,然后在調用輸出高電平這個函數,在加延時,這樣就實現了一個循環閃爍的 用戶燈。

  接下來,我們看一下 elink32 仿真器與實驗板的連接圖。

  

 

  最后,點擊編譯 ,無誤后下載到我們的實驗平台上,觀察效果。更改延時值的大小就可以改變它的閃爍頻率。

 

視頻學習資料

C語言控制led燈
http://www.makeru.com.cn/live/1392_304.html?s=45051

 

概念這么多,我該如何學
http://www.makeru.com.cn/live/4034_1461.html?s=45051
如何做好精准職業規划
http://www.makeru.com.cn/live/4006_1429.html?s=45051
釋放潛能:學習效率提升、編程能力提升
http://www.makeru.com.cn/live/3507_1276.html?s=45051

( ADC讀取光照傳感器)
http://www.makeru.com.cn/live/1392_1004.html?s=45051
通信協議 - UART串口協議
http://www.makeru.com.cn/live/3576_1437.html?s=45051
stm32之SPI通信
http://www.makeru.com.cn/live/3523_1795.html?s=45051

 

學習交流資料下載群:830802928


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM