在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32速成筆記(1)概述

冬至子 ? 來源:二土電子 ? 作者:二土電子 ? 2023-10-23 16:15 ? 次閱讀

1. 編程規范

對于新手來講,編程規范以及代碼架構也非常重要,有一個良好的編程規范和代碼架構,可以提高開發效率,方便問題排查以及后續的程序維護。這里介紹的編程規范很簡單,要求不嚴格。主要有以下幾點

  • ? 變量定義 變量定義時最好是能夠體現該變量所屬的外設模塊,該變量是否為全局變量,靜態變量或者指針變量。變量首字母小寫,后面的單詞首字母大寫。舉例如下
// 以ADC模塊為例,需要定義一個存儲AD值的變量,舉例說明變量命名方式

// 局部變量
u32 adValue = 0;

// 全局變量
u32 gAdcAdValue = 0;   // 加一個g表示是全局變量

// 全局靜態變量
static u32 gsAdcAdValue = 0;   // 加一個s表示靜態變量

// 指針變量
u32 *gpAdcAdValue = (u32*)0x2000800;   // 加一個p表示為指針變量
  • ? 注釋 函數注釋舉例如下
/*
 *==============================================================================
 *函數名稱:
 *函數功能:
 *輸入參數:
 *返回值:無
 *==============================================================================
*/

對于程序語句注釋,如果過長可以在程序上方加注釋,如果不是很長可以在程序語句后面空三格輸入注釋。

  • ? 函數命名 函數命名要體現函數所屬的層級以及函數的功能,關于層級會在代碼架構的部分詳細說明,這里只說一下函數命名方式。
// 這里以ADC模塊的讀取AD值函數為例,說明函數命名方式
void Med_Adc_ReadAdValue (void)
{
    // 函數內容
}

這里med指示該函數位于功能層,屬于ADC模塊,作用是讀取AD值。

  • ? if,while等語句的使用 使用if或者while等語句時,需要在括號前面加一個空格,如下
if (gAdcAdValue == 0)
{
    // 程序語句
}
  • ? 四則運算 四則運算符號前后需要加空格,包括等于號等符號。如下
c = a * b;

2. 程序架構

該程序架構是本人在工作期間學習的,個人感覺還是有助于提高開發效率,方便后續維護的。主要思想是將一個模塊的程序分成三部分,每一部分是一個新建的文件夾,下面都是其他模塊相同層級的文件。

  • ? Drv 驅動層 該層主要是寫一些模塊的初始化程序,例如GPIO的初始化,ADC的初始化等。

  • ? Med 功能層 該層主要是完成一些功能性的操作,比如讀取AD值,點亮LED等。Med層的函數可以包含Drv層的函數。

  • ? App 業務層 該層主要是完成一些業務,比如在點亮LED的基礎上實現流水燈,比如顯示電壓值等。

    四、STM32F103ZET6簡介

    STM32F103ZET6是由意法半導體(ST)生產的一款單片機,32指32位。STM32也可以成為32位微處理器。STM32F103ZET6的主時鐘頻率為72MHz,512KB的FLASH,64KB的SRAM。常用到的有GPIO,中斷,ADC,TMR,UARTDMA等。

    五、程序模板

    在使用Keil5編程時,針對一個外設需要新建對應的.c和.h文件。這里以LED模塊為例,簡單介紹一下本人的常用模板

.c文件

#include "LED.h"   // LED頭文件

需要注意的是一定要空出來一格,否則編譯會報警告。

圖片

文件最后未空一行的警告

.h文件

#ifndef _LED_H
#define _LED_H

#include "sys.h"   // STM32庫文件

#endif

.h文件最后也要空出一行,否則也會有警告。

新建完之后需要將這兩個文件添加到工程中。

對于.c文件,右鍵工程文件夾,選擇“Manage Project Items”打開。

點擊“Add Files”將新建的.c文件加入到對應的文件夾下。

圖片

添加.c文件

對于.h文件,點擊魔術棒,選擇“C/C++”,點擊三個小點選擇對應文件夾即可。

圖片

添加.h文件

六、ST-Link調試

在開發過程中學會使用Debug調試,能夠幫助我們更快地定位問題。這里簡單介紹一下利用ST-Link和普中核心板Debug調試方法。

6.1 硬件連接

首先將ST-Link與核心板連接起來,ST-Link的引腳如下

圖片

ST-Link引腳

核心板上并沒有給ST-Link預留單獨的接口,而是跟JTAG一起。

其原理圖和硬件圖如下

圖片

JTAG原理圖

圖片

JTAG硬件圖

由原理圖可知,ST-Link的“SWCLK”連接核心板的“JTCK”,“SWDIO”連接核心板的“JTMS”,“RST”接“RESET”。

VCC不要接,接好ST-Link后再單獨給核心板供電。

6.2 Keil配置

硬件連接好后開始配置Keil5,關于ST-Link驅動的安裝這里就不再做介紹了。

  • ? 首先確定ST-Link驅動是否正常
    圖片
    確認ST-Link驅動是否安裝正常

  • ? 配置Debug 點擊魔術棒,選擇Debug,下圖處選擇“ST-Link Debugger”。
    圖片
    Debug配置
    然后再點擊“Settings”,在“SWIO”右側不顯示“no target connected”就說明ST-Link連接正常。點擊“Flash Download”
    圖片
    Flash Download
    按照圖示配置,“Programming Algorithm”只要選擇符合芯片型號的即可,需要注意的是,只能保留一個。
    圖片
    Flash Download配置
    按照下圖配置“Utilities”。
    圖片
    配置Utilities
    至此,Keil5關于ST-Link的內容配置完成,如果小伙伴遇到其他問題,可以多去看一些大佬們的博客。

    6.3 下載調試

    配置完上面的內容后就可以使用ST-Link進行下載調試了。下載的話比較簡單,編譯完成后直接點擊下圖標注的圖標,等到下載完成即可。

圖片

下載程序

調試時點擊下圖所示按鈕,進入Debug調試。

圖片

調試按鈕

下面簡單介紹一下調試窗口中各個按鈕的作用,其他更加詳細的介紹需要小伙伴自行搜索,這里參考了這篇大佬的文章KEIL5中Debug調試。

圖片

調試窗口按鈕含義

第一部分從左到右

  • ? 復位
  • ? 全速運行
  • ? 停止
  • ? 每點一次運行一行,遇到函數體會進入
  • ? 每點一次運行一行,遇到函數體不進入,直接執行完到下一行
  • ? 快速執行當前函數剩余語句,然后跳出該函數體,準備執行下一條
  • ? 直接運行到光標處

第二部分從左到右

  • ? 設置當前光標處為斷點
  • ? 失能當前光標處斷點
  • ? 失能全部斷點
  • ? 刪除全部斷點

打斷點的方法比較簡單,直接在想要打斷點的一行左側點擊一下,出現一個紅點就表示已經添加了斷點。斷點的作用是能夠讓程序運行到斷點處停止,有助于我們分析函數運行方式以及變量的變化。

圖片

斷點示意圖

調試時可以查看某一個變量的值。選中想要查看的變量,右鍵

圖片

查看變量值

此時就會出現一個窗口,能夠查看該變量的值。

圖片

查看變量值

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微處理器
    +關注

    關注

    11

    文章

    2372

    瀏覽量

    83898
  • GPIO
    +關注

    關注

    16

    文章

    1276

    瀏覽量

    53637
  • LED模塊
    +關注

    關注

    0

    文章

    27

    瀏覽量

    13435
  • ADC模塊
    +關注

    關注

    1

    文章

    19

    瀏覽量

    11210
  • STM32F103ZET6
    +關注

    關注

    9

    文章

    67

    瀏覽量

    21629
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32速成

    喲管STM32速成貼?求助
    發表于 01-23 14:34

    速成Cadence Allegro的方法概述

    4周小白成為大神,速成Cadence Allegro 讓你走向職場巔峰!.pdf(114.83 KB)
    發表于 10-08 07:49

    STM32電源監控器概述原因

    MCU學習筆記電源管理系統1. STM32電源監控器概述2. STM32電源3. HAL庫配置PVD實例
    發表于 11-03 07:01

    筆記概述

    筆記概述          &nbs
    發表于 12-18 10:10 ?408次閱讀

    筆記本電腦選購與使用常識(高手速成)

    筆記本電腦選購與使用常識(高手速成) 專家建議,在筆記本電腦選購時,一般來講,應該從價格、性能、質量和服務4個方面綜合考慮
    發表于 01-20 11:51 ?840次閱讀

    筆記本屏幕測試速成

    筆記本屏幕測試速成篇   暑期的到來,廣大學生朋友著實給本已經垂死掙扎的市場注入了一針強心劑,不過今天我們討論的并不
    發表于 01-23 08:59 ?1453次閱讀

    STM32各模塊學習筆記

    STM32個模塊學習筆記 目錄 STM32筆記之一 中斷優先級.....................................................
    發表于 11-30 03:32 ?3232次閱讀

    MCU學習筆記_STM32低功耗模式概述

    MCU學習筆記電源管理系統1. STM32低功耗模式概述2. 寄存器和庫函數配置3. HAL庫配置PVD實例1.
    發表于 10-28 17:36 ?9次下載
    MCU學習<b class='flag-5'>筆記</b>_<b class='flag-5'>STM32</b>低功耗模式<b class='flag-5'>概述</b>

    STM32學習筆記1)——LED和蜂鳴器

    閱讀前提示: 我們使用的板子是正點原子的ALIENTEK精英STM32F103。本文使用固件庫進行編程,因為使用固件庫編程較為方便,且閱讀程序也較易理解。STM32學習筆記1)——L
    發表于 11-26 11:51 ?15次下載
    <b class='flag-5'>STM32</b>學習<b class='flag-5'>筆記</b>(<b class='flag-5'>1</b>)——LED和蜂鳴器

    STM32筆記)一、STM32特點

    我用的是正點的STM32F767來進行學習。之后的這個系列筆記開頭未標明的話,用的也是這個板子。一、STM32 特點1、什么是
    發表于 12-04 14:36 ?8次下載
    (<b class='flag-5'>STM32</b><b class='flag-5'>筆記</b>)一、<b class='flag-5'>STM32</b>特點

    [STM32CubeMX]學習筆記1:GPIO輸出LED流水燈

    [STM32CubeMX]學習筆記1:GPIO輸出LED流水燈
    發表于 12-05 13:36 ?12次下載
    [<b class='flag-5'>STM32</b>CubeMX]學習<b class='flag-5'>筆記</b><b class='flag-5'>1</b>:GPIO輸出LED流水燈

    STM32學習筆記--------day1

    STM32學習筆記--------day1
    發表于 12-05 20:36 ?8次下載
    <b class='flag-5'>STM32</b>學習<b class='flag-5'>筆記</b>--------day<b class='flag-5'>1</b>

    stm32學習筆記1

    此博客僅個人學習筆記,用以本人學習stm32的記錄、分析、總結。有所錯漏再所難免,有則改之無則加勉。這里就直接以通俗的語言來記錄了,大家見諒。學習stm32首先我們要有兩個平臺,一個是安裝在電腦上
    發表于 01-18 08:37 ?59次下載
    <b class='flag-5'>stm32</b>學習<b class='flag-5'>筆記</b><b class='flag-5'>1</b>

    AN5597_STM32WB3或5xxx和STM32WB1xxx應用筆記

    AN5597_STM32WB3或5xxx和STM32WB1xxx應用筆記
    發表于 11-21 08:11 ?0次下載
    AN5597_<b class='flag-5'>STM32</b>WB3或5xxx和<b class='flag-5'>STM32WB1</b>xxx應用<b class='flag-5'>筆記</b>

    STM32速成筆記(6)—定時器

    關于什么是定時器,簡單來講,就是是用來定時的。STM32F103ZET6有兩個基本定時器TIM6和TIM7,四個通用定時器TIM2~TIM5和兩個高級定時器TIM1,TIM8。
    的頭像 發表于 10-24 09:41 ?5267次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>速成</b><b class='flag-5'>筆記</b>(6)—定時器
    主站蜘蛛池模板: 成人免费淫片95视频观看网站 | 日本69sexmovies | 男女做视频网站免费观看 | 狠狠色丁香久久综合婷婷 | 九九热精品视频在线播放 | 国产你懂的在线 | 国产精品免费视频拍拍拍 | 毛片你懂的 | 8090yy理论三级在线观看 | 国内免费视频成人精品 | 成人最新午夜免费视频 | 日本天堂影院在线播放 | 五月婷婷六月综合 | 免费观看视频在线观看 | 玖玖国产 | 国产农村妇女毛片精品久久 | 亚洲一区二区三区免费 | 色视频在线看 | 香蕉午夜视频 | 天天天天干| 日本aaaa毛片在线看 | 视频一区二区在线播放 | 免费一级毛片在线播放不收费 | 国产精品毛片一区二区三区 | 免费网站日本永久免费观看 | 免费高清在线观看a网站 | 亚洲一区二区三区精品视频 | 日韩毛片免费线上观看 | 伊人精品视频在线 | 97色噜噜 | 欧日韩美香蕉在线观看 | 亚洲高清一区二区三区 | 在线成人免费观看国产精品 | 伊人久久大杳蕉综合大象 | 丁香婷婷电影 | mmmxxx69日本 | 日韩一级片免费观看 | 韩国三级观影久久 | 黄网址免费 | 最近最新免费视频 | 亚洲精品91大神在线观看 |