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