STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)
CubeMX生成工程步驟
- 前言
- 一、時鐘相關(guān)
- 1.1 RCC
- 1.2 Clock Configuration 時鐘設(shè)置
- 二、調(diào)試相關(guān)
- 三、外設(shè)相關(guān)
- 3.1 USART 串口
- 3.2 GPIO(LED、按鍵)
- 3.3 TIM 定時器
- 3.3.1 定時器時間計算說明
- 3.4 IWDG 獨立看門狗
- 四、其他應(yīng)用相關(guān)
- 4.1 ADC設(shè)置
- 五、生成工程
- 5.1 Project 欄目
- 5.2 Code Generator欄目
前言
因為以前的芯片漲價,選擇了 STM32L051 作為替換 STM32F103 的芯片,所以做了一個基礎(chǔ)測試的欄目。
使用L051測試,當然得使用STM32CubeMX工具,
新建工程,選擇對應(yīng)芯片,然后設(shè)置下相應(yīng)的引腳(需要根據(jù)自己的原理圖)。
調(diào)整文章結(jié)構(gòu),添加圖文說明,使得理解更加簡單,步驟更加明了。
一、時鐘相關(guān)
1.1 RCC
欄目中的選項如下:
- Disable(禁用)
- BYPASS Clock Source(旁路時鐘源)
- Crystal/Ceramic Resonator(晶體/陶瓷晶振)
如上圖一樣有外部晶振選擇 Crystal/Ceramic Resonator
1.2 Clock Configuration 時鐘設(shè)置
在設(shè)置定時器參數(shù)之前,需要先確定系統(tǒng)的時鐘,在這里我們第一次測試,用不到低功耗,所以將系統(tǒng)時鐘設(shè)置為32MHZ最大值,如下圖:
二、調(diào)試相關(guān)
在SYS中選擇 SWD燒錄模式 Debug Serial Wire
三、外設(shè)相關(guān)
3.1 USART 串口
使用串口1(USART1)作為調(diào)試串口(PA9 PA10),選擇Asynchronous (異步通訊模式),打開串口中斷,設(shè)置好自己需要的波特率,串口1設(shè)置完成。
還需要使用另外一個串口與無線模塊通訊,PCB圖紙上使用的是(PB10 PB11),同樣按照上圖設(shè)置,這兩個端口在STM32F103上是正常的串口3,但是在STM32L051上是LPUART1,是一個低功耗串口,這里并不需要用到它的低功耗功能,就直接和普通串口一樣設(shè)置,把他當做一個普通串口使用。
3.2 GPIO(LED、按鍵)
LED燈設(shè)置為輸出,按鈕設(shè)置為輸入, 選中對應(yīng)的IO口,選擇模式,如下圖:
還可以對每個IO口進行設(shè)置,如下圖:
3.3 TIM 定時器
查閱資料STM32L051C8T6有5個定時器
通用定時器(TIM2、TIM21、TIM22、),基本定時器(TIM6),低功耗定時器(LPTIM1)。
因為用不到低功耗定時器,主要還是不確定低功耗定時器是否和普通定時器一樣用,本次目的主要還是想先測試出效果,所以選用通用定時器,其中Clock Source 選擇為 internal Clock ;
定時器選中還有一個重要的配置:
3.3.1 定時器時間計算說明
在上面的時鐘設(shè)置好以后,就可以設(shè)置定時器里面的ARR和PSC:
- ARR :重裝載值(auto reload register)
- PSC :預(yù)分頻器(pre-scaler)
公式如下:
//Tclk:定時器的輸入時鐘頻率(單位MHZ) //Tout:定時器溢出時間(單位為us Tout = ((arr+1)*(psc+1))/Tclk ;比如上圖中的定時器,就設(shè)置成了 定時時間1S,每 1S 就會產(chǎn)生一次中斷。
如何理解這個時間:
比如F103晶振 72M,也就是一秒計 72 00 0000 次,72 00 0000 HzPrescaler預(yù)分頻值設(shè)置7200-1是因為預(yù)分頻值從0開始我們把72M除以預(yù)分頻值7200就是我們定時器速度,速度變?yōu)榱艘幻胗?0000次Counter Period重裝載值設(shè)置為10000,也就是定時器從0開始記了10000次以后就又回歸從0開始計算到10000一直循環(huán)我們定時器的速度為1秒記10000次,重裝載值也剛好是10000,那么記一次重裝載要的時間就是1秒,那么速度剛好是1Hz比如我們設(shè)置重裝載值為1000,定時器速度是10000Hz,記一次重裝載值的速度只要0.1秒也是10Hz定時器的10000除以重裝載的1000也就是10,就是定時器配置成了10Hz在本次測試中,其中使用TIM2,TIM21 2個通用定時器,TIM2設(shè)置成為1S,作為普通邏輯的定時器,TIM21設(shè)置為1ms 作為按鈕的定時器:
3.4 IWDG 獨立看門狗
產(chǎn)品生產(chǎn)往往會有意想不到的情況,在程序設(shè)計可能會有問題,在硬件上也可能會遇到特殊情況,看門狗的加入往往會對產(chǎn)品差錯起到一定的幫助作用。
選擇IWDG,使能獨立看門狗:
配置看門狗的時間:
這里重裝載值我設(shè)置了3700,是因為好計算,使能了獨立看門狗以后可以在時鐘圖中看到獨立看門狗的時鐘頻率為37KHZ:
用到幾個公式:f=1/T,單位是s,單位是HZ。(其中大寫字母T,表示周期,小寫字母f表示頻率)
看門狗 f= 看門狗時鐘頻率 / (預(yù)分頻系數(shù) * 重裝載值) = 37000HZ / (64 * 3700)=10/64
看門狗時間 T = 6.4s
(不知道有沒有算錯= =!在后面測試過程中確認了,計算時正確的!)
以上設(shè)置,可以把基本的功能測試使用起來。
四、其他應(yīng)用相關(guān)
經(jīng)過上面的設(shè)置(定時器、串口都可以不需要開,只不過一個項目一般都會用到所以單獨列出來了),我們可以做一些基本的應(yīng)用,在實際項目中,其實還會應(yīng)用到許多其他的設(shè)置,比如ADC,DAC,SPI,COMP 甚至是 RTOS 相關(guān)的設(shè)置,這里也就簡單的說明一下。
4.1 ADC設(shè)置
ADC原理來說,其實相對比較簡單,網(wǎng)上隨便一找都是資料,這里我們說明下在 STM32CubeMX 下如何設(shè)置。
這里要主要說一下 ADC 的選項配置,具體如下圖:
本文說明以 最簡單基礎(chǔ)的 輪詢 單通道 單次采樣為例設(shè)置:
這里額外說明一下ADC 得到的數(shù)據(jù)換算成真實電壓的計算公式:
12位精度: 電壓 = ADC數(shù)據(jù) * VREF / 4096
一般 VREF 為 3.3 V 的時候就是 電壓 = ADC 數(shù)據(jù) * 3.3 / 4096 (V)
10位精度: 電壓 = ADC數(shù)據(jù) * VREF / 1024
當然,對于計算公式,上面的4096 和 1024 后面是否需要 -1 ,12位精度: 電壓 = ADC數(shù)據(jù) * VREF / (4096-1) ,也是很多人討論的問題,這里不做討論,一些普通的項目差別不大 = = !
對于 ADC 的使用,到時候有時間會單獨拿出一篇文章介紹 。
五、生成工程
最后一步生成工程的時候,再次提醒一下,路徑中不能又中文,否則會出問題!(雖然在網(wǎng)上看到有例子存在中文也沒有問題的情況,但是自己生成的時候確實出了問題,所以改個英文路徑問題不大)。
5.1 Project 欄目
項目名字,工程路徑,生成工程后想要使用的IDE,堆棧大小,SDK軟件包:
5.2 Code Generator欄目
生成工程的一些選項:
上圖中勾選的 4個選項意思如下:
-
copy all used libraries into the project folder
復制所有庫文件(不管工程需要用到還是沒用到)到生成的工程目錄中。 -
generate peripheral initialization as a pair of …:
每個外設(shè)生成獨立的.C .H文件 -
keep user code when re-generating
重新生成代碼時,保留用戶代碼(在用戶規(guī)定的書寫范圍內(nèi)) -
delete previously generated files when not re-generated
刪除以前生成但現(xiàn)在沒有選擇生成的文件
最后點擊GENERATE CODE 生成工程即可,生成工程說明就到這里,下一篇我們會根據(jù)生成的工程文件進行對應(yīng)的修改進行測試。
總結(jié)
以上是生活随笔為你收集整理的STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学校计算机技术管理员制度,学校计算机室管
- 下一篇: go 实现发送短信验证码登录