嵌入式系统设计与开发期末考试复习
嵌入式系統設計與開發期末考試復習
- STM32學習筆記
- 第一章:嵌入式系統概述
- 1.嵌入式系統概念,應用與特點
- 2.嵌入式系統的硬件(CPU,外設)
- 3.主要嵌入式軟件系統(應用及OS)
- 4.嵌入式系統的發展趨勢
- 第二章:ARM Cortex-M3微處理器基礎
- 1.CM3微控制器簡介
- 2.CM3存儲格式類型
- 3.CM3處理器組件
- 4.CM3指令系統
- 5.CM3寄存器組織
- 6.CM3存儲映射與位帶操作
- 7.CM3異常與中斷
- 8.STM32F10系列的GPIO
- 第三章:嵌入式開發環境
- 第四章:STM-32平臺開發基礎
- 使能時鐘
- 使能時鐘例子
- GPIO學習
STM32學習筆記
考試在即,在CSDN上借鑒了一些大佬的文章以及書本內容,整理成筆記
第一章:嵌入式系統概述
1.嵌入式系統概念,應用與特點
問:什么是嵌入式系統?有什么特點?應用在哪些領域?
嵌入式是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統對功能,可靠性,成本,體積,功耗有嚴格要求的專用計算機系統
特點:(1)專用性強(2)嵌入性強(3)可剪裁性好(4)可靠性高(5)系統內核小(6)一般是實時系統(7)極其關注成本(8)有功耗約束
應用領域:工業制造,過程控制,通信,儀器,儀表,汽車,輪船,航空等領域
嵌入式系統由軟件和硬件部分組成
(1)硬件:嵌入式處理CPU,輸入輸出設備
(2)軟件:驅動程序DRV,操作系統OS,應用軟件app
2.嵌入式系統的硬件(CPU,外設)
(1)嵌入式系統組成:嵌入式處理器,外設,操作系統,應用軟件等。
(2)嵌入式處理器通常分為以下幾類:
嵌入式微控制器(MCU)
嵌入式微處理器(EMPU)
嵌入式DSP處理器(EDSP)
嵌入式片上系統(SOC)
典型的嵌入式處理器:(1)ARM(2)MIPS(3)PowerPC(4)x86(5)Motorola68000
(3)外設的分類
外圍設備按功能分為三種:存儲設備,通信設備和顯示設備
3.主要嵌入式軟件系統(應用及OS)
嵌入式軟件系統分為嵌入式操作系統和應用軟件兩大類,核心是嵌入式操作系統
(1)嵌入式操作系統
傳統的經典RTOS,嵌入式Linux操作系統,Android系統,WindowsCE嵌入式操作系統,uc/OS-II實時操作系統
(2)嵌入式應用軟件
嵌入式支撐軟件,應用程序
4.嵌入式系統的發展趨勢
(1)嵌入式開發是一項系統工程
(2)網絡化,信息化的要求
(3)網絡互聯,移動互聯成為必然趨勢
(4)精簡系統內核,算法,降低功耗和軟硬件成本
(5)提供友好的多媒體人機交互界面
第二章:ARM Cortex-M3微處理器基礎
1.CM3微控制器簡介
CM3微控制器是一種嵌入式微控制器,支持兩種工作模式:線程模式和處理模式,有兩種工作狀態:Thumb狀態和調試狀態
2.CM3存儲格式類型
(1)大端格式:字數據中的高字節存儲在低地址,而低字節存儲在高地址
(2)小端格式:與大端模式相反
3.CM3處理器組件
CM3處理器系統的主要模塊包括:
(1)處理器內核
(2)嵌套向量中斷控制器NVIC
(3)總線矩陣
(4)存儲器保護單元MPU
(5)系統調試組件和調度端口
(6)喚醒中斷控制器WIC
內核結構(1)采用Thumb-2指令集架構的子集(2)采用哈佛處理器架構(3)采用三級流水線+分支預測
哈佛結構:一種將程序中指令和數據分開存儲的存儲器結構,是一種并行存儲體系結構
普林頓結構:一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構
三級流水線:取指->解碼->執行,無論處理器處于何種狀態,PC總是指向“正在取值”指令的地址
4.CM3指令系統
(1)數據傳送指令
(2)數據處理指令
(3)子程序調用和無條件跳轉指令
5.CM3寄存器組織
CM3擁有R0-R15通用寄存器以及一些特殊功能寄存器
(1)通用寄存器
低寄存器:R0-R7,能夠被指定通用寄存器的所有指令訪問,復位后初始值不可預知
高寄存器:R8-R12,可以被指定通用寄存器的所有32位指令訪問
堆棧寄存器SP:R13,作為SP自動與字對齊,對應兩個不會被同時訪問的寄存器SP_main和SP_process
鏈接寄存器LR:R14,執行分支指令時存儲一個返回地址
程序計數器PC:R15,指向當前的程序地址
(2)特殊功能寄存器
狀態寄存器
中斷屏蔽寄存器
控制寄存器
6.CM3存儲映射與位帶操作
(1)存儲器映射
ARM Cortex-M3只有一個單一固定的存儲器映射,支持4GB存儲空間
(2)位帶操作
位帶區和位帶別名區的對應關系(計算)
7.CM3異常與中斷
當正常的程序執行流程發生暫時的停止時,稱之為異常,處理器允許多個異常同時發生,將按固定的優先級進行處理。
廣義的異常包括內核異常和外部中斷,內核異常是可預知的,對于內核來說是同步的,而外部中斷是不可預知的,對于內核是異步的。
在STM32中,正常的程序執行流程發生暫時停止的情形,統稱為異常,而由外部事件導致的程序執行流程改變的情形也可稱為中斷,因此,異常的概念包含了中斷,或者說,中斷是一種特殊的異常
8.STM32F10系列的GPIO
通用輸入/輸出口GPIO是一個靈活的由軟件控制的數字信號,每個GPIO都代表一個連接到CPU特定引腳的一個位,GPIO端口的每一位都可以有多種模式:4種輸入模式:輸入浮空,輸入上拉,輸入下拉,模擬輸入,4種輸出模式:開漏輸出,推免式輸出,推免式復用功能,開漏復用功能。
第三章:嵌入式開發環境
交叉編譯,開發工具
交叉編譯是指在某個平臺上用交叉編譯器編譯出可在其他平臺上運行的代碼的過程
第四章:STM-32平臺開發基礎
重點:
1.GPIO原理即程序設計,包括流水燈和八段數碼管
2.按鍵原理與程序設計中斷原理與中斷程序設計
3.串口通信原理與程序設計
4.定時器與看門狗原理及程序設計
使能時鐘
什么是時鐘?
時鐘就像一個小小的開關,需要用什么寄存器就得首先打開對應的開關,即使能對應的時鐘:
為什么要使用時鐘?
讓用戶可以精確地控制,關閉不需要的設備,達到節省供電的目的。如果不用的就完全關閉,盡可能降低芯片功耗
STM32時鐘的分類:
使能時鐘例子
使能AFIO:RCC->APB2ENR|=1<<0;
使能PORTA時鐘:RCC->APB2ENR|=1<<2;
使能PORTB時鐘:RCC->APB2ENR|=1<<3;
使能PORTE時鐘:RCC->APB2ENR|=1<<6;
I/O時鐘屬于APB2控制
GPIO學習
通用輸入/輸出口GPIO是一個靈活的由軟件控制的數字信號,每個GPIO都代表一個連接到CPU特定引腳的一個位。
STM32 IO簡介:STM32F103VBT6一共有五組輸入輸出端口(I/O口,簡稱IO),分別是GIPOA,GPIOB,GPIOC,GPIOD,GPIOE,每個IO口有16個IO,一共80個IO端口
GPIO端口的四種輸入模式:浮空輸入,上拉輸入,下拉輸入,模擬輸入
四種輸出模式:開漏輸出,推免式輸出,開漏復用功能,推免式復用功能
幾個比較常用的配置:0x4表示模擬輸入模式,0x3表示推免輸出模式,0x8表示上拉/下拉輸入模式,0xB表示復用輸出。
STM32的每個I/O口都由7個寄存器控制:2個32位端口配置寄存器CRL和CRH;2個32位的數據寄存器IDR和ODR;1個32位的置位復位寄存器BSRR;1個16位的復位寄存器BRR;1個32位的鎖存寄存器LCKR;最常用的有4個:CRL/CRH/IDR/ODR;因此通常情況下只需要配置好以上四個寄存器就可以了。而CRH和CRL作用是完全一樣的,只不過CRH控制的是高8位的IO而CRL控制的是低8位的
IDR是查看引腳電平狀態用的寄存器,ODR是引腳電平輸出的寄存器。
例如要設置PORTC的第11位為上拉輸入,第12位為推免輸出
示例代碼:
流水燈程序:
#include"stm32f10x_map.h" //定義STM32寄存器 #define GPIOB_CRL((unsigned long int *)0x40010C00) #define GPIOB_ODR((unsigned long int *)0x40010C0C) #define GPIOB_CRH((unsigned long int *)0x40011804) #define GPIOB_ODR((unsigned long int *)0x4001180C) //以下用位帶方式定義PE的第八個IO口 u32* PE08=(u32*)(0x42000000+(0x4001180C-0x40000000)*32+8*4) int delay(int Time) { //延時函數,通過循環空操作實現一定的時間延時unsigned short t,i,j;for(t=0;t<Time;t++)for(i=0;i<1000;i++)for(j=0;j<1000;j++);return 0; } void main() { RCC->APB2ENR|=1<<0;//使能AFIO RCC->APB2ENR|=1<<3;//使能PORTB時鐘 RCC->APB2ENR|=1<<6;//使能PORTE時鐘 AFIO->MAPR=0x02000000; //初始化IO端口參數 *GPIOB_CRL&=0xFFFF0FFF;//將3位置0 *GPIOB_CRL&=0x00003000;//PB.3推免輸出 *GPIO_ODR|=0x00000008;//PB.3輸出高,8的二進制表示為1000,故第三位輸出高 *GPIOE_CRH&=0x33333333;//PE.8-15推免輸出 *GPIOE_ORD|=0x0000FF00;//PE.8-15輸出高,一個十六進制的數可以表示為4位2進制數,因此FF所處的位置剛好在8-15位 delay(5); while(1) { *PE08=1;//LED1亮 delay(2); *PE08=0;//LED1滅 delay(2); *GPIOE_ODR=0X00000200;//LED2 delay(2); *GPIOE_ODR=0X00000400;//LED3 delay(2); *GPIOE_ODR=0X00000800;//LED4 delay(2); *GPIOE_ODR=0X00001000;//LED5 delay(2); *GPIOE_ODR=0X00002000;//LED6 delay(2); *GPIOE_ODR=0X00004000;//LED7 delay(2); *GPIOE_ODR=0X00008000;//LED8 delay(2); } }總結
以上是生活随笔為你收集整理的嵌入式系统设计与开发期末考试复习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机基础知识——基础入门(一)
- 下一篇: 使命召唤12服务器系统,《使命召唤12: