文章目錄
- 一、單片機簡介
- 二、Cortex-M系列介紹
- 三、初識STM32
- 四、STM32原理圖設計
- 五、搭建開發環境
- 六、STM32初體驗
- 七、MDK5使用技巧
一、單片機簡介
-
單片機是什么?
單片機:Single-Chip Microcomputer,單片微型計算機,是一種集成電路芯片。
下面是電腦與單片機的對應關系:
-
單片機的特點?
- 體積小:<5mmx5mm
- 功耗低:mA級
- 集成度高:IO、TIM、AD、DA
- 使用方便:C、Debug
- 拓展靈活:IIC、SPI、FSMC
-
單片機有什么用?
- 儀器儀表:電源、示波器、焊臺
- 家用電器:空調、冰箱、洗衣機
- 工業控制:機器人、PLC、電梯
- 汽車電子:GPS、ABS、胎壓監測
-
單片機發展歷程?
-
了解兩種指令集?
對比項 復雜指令集計算機(CISC) 精簡指令集計算機(RISC) 目的 為了便于編程和提高存儲器訪問效率 為了提高處理器運行速度 指令特點 1,指令多,模式多,格式可變
2,指令的執行需要的時鐘周期差距很大
3,無流水線或流水線程度較低
4,指令由微代碼翻譯執行1,指令少,模式少,格式固定
2,大多數指令只需1個時鐘周期
3,流水線結構
4,指令直接由硬件執行優點 1,指令豐富、功能強大
2,尋址方式靈活1,指令精簡,易于設計,使用率均衡
2,程序執行效率高缺點 1,指令使用率不均衡
2,不利于采用先進結構提高性能
3,結構復雜不利于超大規模集成電路實現1,指令數較少,功能不及CISC強大
2,尋址方式不夠靈活使用CISC和RISC舉例:
-
馮諾依曼結構和哈弗結構的區別?
馮諾依曼結構的優點是占用的資源少,哈弗結構的優點是執行效率較高。
二、Cortex-M系列介紹
-
ARM公司:只做內核設計和IP授權,不參與芯片設計。
-
ARM架構為什么能風靡全球?
- 低功耗、低成本、高性能
- 支持16/32位雙指令集
- 擁有眾多合作伙伴
-
Cortex內核分類及特征?
對比項 Cortex-A
(Application)Cortex-R
(Real-time)Cortex-M
(Microcontroller)特點 高時鐘頻率,長流水線,高性能 較高時鐘頻率,較長的流水線,實時性強 時鐘頻率較低,通常較短的流水線,超低功耗 應用場景 移動計算、智能手機、平板電腦、數字電視 軍工、汽車電子、無線基帶、硬盤控制器 工控、傳感器、消費電子、家用電器、醫療器械
三、初識STM32
-
STM32是什么?
ST:意法半導體, M:MCU/MPU,32:32位
-
STM32命名規則?
四、STM32原理圖設計
-
芯片的基本參數(STM32F103ZET6)
參數 范圍 主頻 72MHz FLASH 512KB SRAM 64KB 工作電壓 2.0~3.6V 最大電流 150mA IO引腳接入電壓范圍 COMS端口:-0.3V ~ 3.6V 兼容5V端口:-0.3V ~ 5.5V 單個IO引腳最大電流 25mA -
STM32F103ZET6引腳分布
STM32引腳類型:電源引腳、晶振引腳、復位引腳、下載引腳、BOOT引腳、GPIO引腳。
-
單片機最小系統?
最小系統:保證MCU正常工作的最小電路組成單元
-
電源電路
-
復位電路
-
BOOT啟動電路
-
晶振電路
-
下載調試電路
五、搭建開發環境
-
常用開發工具
工具 名稱 所屬公司 說明 集成開發環境(IDE) MDK Keil STM32最常用的集成開發環境,簡單易用 EWARM IAR 支持STM32開發,用的人少一些 仿真器 DAP ARM 開源、免驅、帶虛擬串口功能、速度快、廉價 STLINK ST 支持全面、穩定、廉價 JLINK Segger 穩定、高速、價格貴 串口調試助手 XCOM 正點原子 功能多、穩定、簡單易用 SSCOM 丁丁 穩定、小巧、簡單易用 -
STM32串口和電腦USB通信示意圖?
六、STM32初體驗
-
MDK5編譯例程
使用MDK5編譯例程,在Program Size里面有四種數據類型,Code、 RO-Data、RW-Data、ZI-Data
數據類型 占用Flash or SRAM 說明 Code Flash 代碼 RO-Data Flash 只讀數據,一般是指 const 修飾的數據 RW-Data Flash and SRAM 初值為 非 0 的可讀可寫數據 ZI-Data SRAM 初值為 0 的可讀可寫數據 -
DAP下載
-
電路連接
-
硬件連接
-
軟件配置
配置ST-Link
設置下載算法
-
開始調試
- 復位:其功能等同于硬件上按復位按鈕。相當于實現了一次硬復位。按下該按鈕之后,代碼會重新從頭開始執行。
- 執行到斷點處:該按鈕用來快速執行到斷點處,有時候你并不需要觀看每步是怎么執行的,而是想快速的執行到程序的某個地方看結果,這個按鈕就可以實現這樣的功能,前提是你在查看的地方設置了斷點。
- 停止運行:此按鈕在程序一直運行的時候會變為有效,通過按該按鈕,就可以使程序停止下來,進入到單步調試狀態。
- 執行進去:該按鈕用來實現執行到某個函數里面去的功能,在沒有函數的情況下,是等同于執行過去按鈕的。
- 執行過去:在碰到有函數的地方,通過該按鈕就可以單步執行過這個函數,而不是進入這個函數單步執行。
- 執行出去:該按鈕是在進入了函數單步調試的時候,有時候可能不必再執行該函數的剩余部分了,通過該按鈕就可以一步執行完該函數的剩余部分,并跳出函數,回到函數被調用的地方。
- 執行到光標處:該按鈕可以迅速的使程序運行到光標處,其實是挺像執行到斷點處按鈕功能,但是兩者是有區別的。斷點可以有多個,但是光標所在處只有一個。
- 反匯編窗口:通過該按鈕,就可以查看匯編代碼,可以用來分析程序。
- Call Stack窗口:通過該按鈕,顯示調用關系和局部變量窗口,顯示當前函數的調用關系和局部變量,方便查看,對分析程序非常有用。
- 觀察窗口:MDK5提供了2個觀察窗口,該按鈕按下,會彈出一個顯示變量的窗口,輸入你所想要觀察的變量/表達式,即可查看其值,是很常用的一個調試窗口。
- 內存查看窗口:MDK5提供4個內存查看窗口,該按鈕按下,會彈出一個內存查看窗口,可以再里面輸入你要查看的內存地址,然后觀察這一片內存的變化情況。是很好用的調試窗口。
- 串口打印窗口:MDK5提供4個串口打印窗口,該按鈕按下,會彈出一個類似串口調試助手界面的窗口,用來顯示從串口打印出來的內容。
- 系統分析窗口:圖標下面有6個選項,我們一般用第一個,也就是邏輯分析窗口(Logic Analyzer),點擊即可調出該窗口,通過SETUP按鈕新建一些IO口,就可以觀察這些IO口的電平變化情況,以多種形式顯示出來,比較直觀。
- 系統查看窗口:該按鈕可以提供各種外設寄存器的查看窗口,選擇對應外設,即可調出該外設的相關寄存器表,并顯示這些寄存器的值,方便查看設置的是否正確。
-
Call Stack窗口:查看函數調用關系或局部變量
-
Watch窗口:查看函數首地址或變量值
-
Memory窗口:內存查看窗口
M3/M4/M7內核是小端模式,內存的值得倒著讀
-
Peripheral窗口:查看寄存器的值
-
-
注意事項
-
仿真時,使用MDK的Level 0等級優化
-
調試停止在斷點處時,只是內核停止,外設會繼續運行
-
斷點的設置要有時間觀念,考慮是否會打斷正常通信
-
-
七、MDK5使用技巧
-
編輯器設置
-
字體和顏色設置
-
用戶關鍵字設置
-
代碼提示/語法檢查
-
快速定位函數或變量被定義的地方
聲明:參考文獻來源: 戰艦STM32F103ZET6開發板資源包
- Cortex-M3權威指南(中文).pdf
- STM32F10xxx參考手冊_V10(中文版).pdf
- STM32F103 戰艦開發指南V1.3.pdf
- STM32F103ZET6(中文版).pdf
- 戰艦V4 硬件參考手冊_V1.0.pdf