ARM微控制器與嵌入式系統(tǒng) 課件 31 定時(shí)器輸出PWM編程實(shí)驗(yàn) - 41 如何在UCOS III上實(shí)現(xiàn)LED燈閃爍_第1頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 31 定時(shí)器輸出PWM編程實(shí)驗(yàn) - 41 如何在UCOS III上實(shí)現(xiàn)LED燈閃爍_第2頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 31 定時(shí)器輸出PWM編程實(shí)驗(yàn) - 41 如何在UCOS III上實(shí)現(xiàn)LED燈閃爍_第3頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 31 定時(shí)器輸出PWM編程實(shí)驗(yàn) - 41 如何在UCOS III上實(shí)現(xiàn)LED燈閃爍_第4頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 31 定時(shí)器輸出PWM編程實(shí)驗(yàn) - 41 如何在UCOS III上實(shí)現(xiàn)LED燈閃爍_第5頁(yè)
已閱讀5頁(yè),還剩225頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ARM微控制器與嵌入式系統(tǒng)

定時(shí)器輸出PWM編程實(shí)驗(yàn)內(nèi)容定時(shí)器輸出PWM編程任務(wù)定時(shí)器輸出PWM編程要點(diǎn)編程實(shí)驗(yàn)定時(shí)器輸出PWM編程任務(wù)任務(wù)要求:使用定時(shí)器TIM3的四個(gè)通道輸出PWM信號(hào)四個(gè)通道的PWM信號(hào)頻率都是500Hz占空比分別為20%,40%,60%,80%,使用示波器顯示出來(lái)。其中第一個(gè)通道的占空比可以循環(huán)變化,當(dāng)接led燈時(shí)能夠從燈的亮滅觀察出占空比的變化。定時(shí)器生成PWM的編程要點(diǎn)1、開(kāi)啟GPIO時(shí)鐘、定時(shí)器時(shí)鐘2、PWM輸出端口配置3、復(fù)用引腳功能映射4、定時(shí)器配置5、輸出通道配置6、PWM使能7、設(shè)置比較器值輸出PWMPWM輸出端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復(fù)用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復(fù)用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure); 定時(shí)器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//預(yù)分頻系數(shù)TIM_TimeBaseStructure.TIM_Period=2000-1;//定時(shí)器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//計(jì)數(shù)模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分頻因子TIM_RepetitionCounter=0; //重復(fù)計(jì)數(shù)TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);輸出通道配置、輸出使能TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//配置為PWM模式1TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//輸出通道使能 TIM_OCInitStruct.TIM_Pulse=1000-1;//配置占空比為1000/2000=50%TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//計(jì)數(shù)小于CCR1為高電平TIM_OC1Init(TIM3,&TIM_OCInitStruct); //使能通道1TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能通道1重載TIM_Cmd(TIM3,ENABLE);

定時(shí)器輸出PWM編程實(shí)驗(yàn)小結(jié)定時(shí)器輸出PWM編程任務(wù)定時(shí)器輸出PWM編程要點(diǎn)編程實(shí)驗(yàn)ARM微控制器與嵌入式系統(tǒng)

定時(shí)器輸出PWM編程實(shí)例主講人:景妮琴北京電子科技職業(yè)學(xué)院PWM應(yīng)用數(shù)模轉(zhuǎn)換電機(jī)控制音調(diào)產(chǎn)生燈的亮度控制使用PWM進(jìn)行數(shù)模轉(zhuǎn)換使用PWM驅(qū)動(dòng)揚(yáng)聲器使用PWM調(diào)節(jié)燈的亮度使用PWM控制電機(jī)內(nèi)容定時(shí)器輸出PWM編程實(shí)例通過(guò)PWM產(chǎn)生音調(diào)通過(guò)PWM產(chǎn)生一首樂(lè)曲定時(shí)器生成PWM的編程要點(diǎn)1、開(kāi)啟GPIO時(shí)鐘、定時(shí)器時(shí)鐘2、PWM輸出端口配置3、復(fù)用引腳功能映射4、定時(shí)器配置5、輸出通道配置6、PWM使能7、設(shè)置比較器值輸出PWMPWM輸出端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復(fù)用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復(fù)用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure); 定時(shí)器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//預(yù)分頻系數(shù)TIM_TimeBaseStructure.TIM_Period=2000-1;//定時(shí)器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//計(jì)數(shù)模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分頻因子TIM_RepetitionCounter=0; //重復(fù)計(jì)數(shù)TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);輸出通道配置、輸出使能TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//配置為PWM模式1TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//輸出通道使能 TIM_OCInitStruct.TIM_Pulse=1000-1;//配置占空比為1000/2000=50%TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//計(jì)數(shù)小于CCR1為高電平TIM_OC1Init(TIM3,&TIM_OCInitStruct); //使能通道1TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能通道1重載TIM_Cmd(TIM3,ENABLE);

定時(shí)器輸出PWM編程實(shí)例通過(guò)PWM產(chǎn)生音調(diào)定時(shí)器輸出PWM編程實(shí)例通過(guò)PWM產(chǎn)生一首樂(lè)曲小結(jié)定時(shí)器輸出PWM編程實(shí)例通過(guò)PWM產(chǎn)生音調(diào)通過(guò)PWM產(chǎn)生一首樂(lè)曲ARM微控制器與嵌入式系統(tǒng)

I2C協(xié)議主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容I2C串行總線概述I2C協(xié)議—物理層I2C協(xié)議—協(xié)議層I2C總線數(shù)據(jù)傳送的模擬I2C串行總線概述采用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化、系統(tǒng)的體積減小、可靠性提高。同時(shí),系統(tǒng)的更改和擴(kuò)充極為容易。常用的串行擴(kuò)展總線有:I2C(InterICBUS)總線、單總線(1-WIREBUS)、SPI(SerialPeripheralInterface)總線及Microwire/PLUS等。I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。I2C串行總線概述I2C串行總線概述I2C總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。I2C串行總線概述I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C串行總線概述每個(gè)接到I2C總線上的器件都有唯一的地址。主機(jī)與器件間的數(shù)據(jù)傳送可以是由主機(jī)發(fā)送數(shù)據(jù)到器件,這時(shí)主機(jī)即為發(fā)送器??偩€上接收數(shù)據(jù)的器件則為接收器。

在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù)。為了避免混亂,I2C總線要通過(guò)總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。在單片機(jī)應(yīng)用系統(tǒng)的串行總線擴(kuò)展中,我們經(jīng)常遇到的是以單片機(jī)為主機(jī),其它接口器件為從機(jī)的單主機(jī)情況。I2C協(xié)議—物理層I2C協(xié)議簡(jiǎn)介I2C通訊協(xié)議(Inter-IntegratedCircuit)是由Philips公司開(kāi)發(fā)的,由于它引腳少,硬件實(shí)現(xiàn)簡(jiǎn)單,可擴(kuò)展性強(qiáng),不需要USART、CAN等通訊協(xié)議的外部收發(fā)設(shè)備,現(xiàn)在被廣泛地使用在系統(tǒng)內(nèi)多個(gè)集成電路(IC)間的通訊。I2C協(xié)議—物理層它是一個(gè)支持多設(shè)備的總線。“總線”指多個(gè)設(shè)備共用的信號(hào)線。一個(gè)I2C總線只使用兩條總線線路,串行數(shù)據(jù)線:SDA,用來(lái)表示數(shù)據(jù)串行時(shí)鐘線

:SCL,用于數(shù)據(jù)收發(fā)同步I2C協(xié)議—物理層每個(gè)連接到總線的設(shè)備都有一個(gè)獨(dú)立的地址,主機(jī)可以利用這個(gè)地址進(jìn)行不同設(shè)備之間的訪問(wèn)??偩€通過(guò)上拉電阻接到電源。當(dāng)I2C設(shè)備空閑時(shí),會(huì)輸出高阻態(tài),而當(dāng)所有設(shè)備都空閑,都輸出高阻態(tài)時(shí),由上拉電阻把總線拉成高電平。7位地址最多連接128個(gè)設(shè)備10位地址最多連接1024個(gè)設(shè)備I2C協(xié)議—物理層具有三種傳輸模式:標(biāo)準(zhǔn)模式傳輸速率為100kbit/s快速模式為400kbit/s高速模式下可達(dá)3.4Mbit/s,但目前大多I2C設(shè)備尚不支持高速模式。連接到相同總線的IC數(shù)量受到總線的最大電容400pF限制

。I2C協(xié)議—協(xié)議層I2C的協(xié)議定義了:通訊的起始和停止信號(hào)數(shù)據(jù)有效性響應(yīng)仲裁時(shí)鐘同步地址廣播I2C協(xié)議—協(xié)議層起始和停止信號(hào):SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示停止信號(hào)。起始和停止信號(hào)一般由主機(jī)產(chǎn)生。I2C協(xié)議—協(xié)議層數(shù)據(jù)位的有效性規(guī)定:I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。I2C協(xié)議—協(xié)議層地址及數(shù)據(jù)方向:I2C總線上的每個(gè)設(shè)備都有自己的獨(dú)立地址,主機(jī)發(fā)起通訊時(shí),通過(guò)SDA信號(hào)線發(fā)送設(shè)備地址(SLAVE_ADDRESS)來(lái)查找從機(jī)。設(shè)備地址可以是7位或10位。緊跟設(shè)備地址的一個(gè)數(shù)據(jù)位R/W用來(lái)表示數(shù)據(jù)傳輸方向,數(shù)據(jù)方向位為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù),該位為“0”時(shí)表示主機(jī)向從機(jī)寫(xiě)數(shù)據(jù)。I2C協(xié)議—協(xié)議層響應(yīng):I2C的數(shù)據(jù)和地址傳輸都帶響應(yīng)。響應(yīng)包括“應(yīng)答(ACK)”和“非應(yīng)答(NACK)”兩種信號(hào)。傳輸時(shí)主機(jī)產(chǎn)生時(shí)鐘,在第9個(gè)時(shí)鐘時(shí),數(shù)據(jù)發(fā)送端會(huì)釋放SDA的控制權(quán),由數(shù)據(jù)接收端控制SDA,若SDA為高電平,表示非應(yīng)答信號(hào)(NACK),低電平表示應(yīng)答信號(hào)(ACK)。I2C協(xié)議—協(xié)議層數(shù)據(jù)傳輸?shù)臄?shù)據(jù)幀格式:

I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(可以是7位),接下來(lái)(第8位)是數(shù)據(jù)的傳送方向位,用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從機(jī)進(jìn)行尋址。數(shù)據(jù)傳輸分為:主機(jī)寫(xiě)數(shù)據(jù)到從機(jī)主機(jī)由從機(jī)中讀數(shù)據(jù)寫(xiě)數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式I2C協(xié)議—協(xié)議層主機(jī)寫(xiě)數(shù)據(jù)到從機(jī):主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變。起始信號(hào)——從機(jī)地址——讀寫(xiě)信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位I2C協(xié)議—協(xié)議層主機(jī)由從機(jī)中讀數(shù)據(jù):主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)。起始信號(hào)——從機(jī)地址——讀寫(xiě)信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位陰影部分:數(shù)據(jù)由主機(jī)傳輸至從機(jī)無(wú)陰影部分:數(shù)據(jù)由從機(jī)傳輸至主機(jī)A表示應(yīng)答,A非表示非應(yīng)答(高電平)。S表示起始信號(hào),P表示終止信號(hào)。R/W表示傳輸方向選擇位,1為讀,0為寫(xiě)。I2C協(xié)議—協(xié)議層寫(xiě)數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式:在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫(xiě)方向位正好反相。。I2C總線數(shù)據(jù)傳送的模擬主機(jī)若是采用不帶I2C總線接口的單片機(jī),如80C51、AT89C2051等單片機(jī),就需要利用軟件實(shí)現(xiàn)I2C總線的數(shù)據(jù)傳送,即軟件與硬件結(jié)合的信號(hào)模擬。為了保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)的I2C總線的數(shù)據(jù)傳送有嚴(yán)格的時(shí)序要求。I2C總線數(shù)據(jù)傳送的模擬I2C總線的起始信號(hào)、終止信號(hào)、發(fā)送“0”及發(fā)送“1”的模擬時(shí)序?yàn)椋篒2C總線數(shù)據(jù)傳送的模擬起始信號(hào)的模擬voidI2CStart(void){ SDA=1; SomeNop(); SCL=1; SomeNop(); SDA=0; SomeNop();}終止信號(hào)的模擬voidI2cStop(void){SDA=0;SomeNop();SCL=1;SomeNop();SDA=1;SomeNop();}小結(jié)IIC概述IIC協(xié)議—物理層IIC協(xié)議—協(xié)議層I2C總線數(shù)據(jù)傳送的模擬ARM微控制器與嵌入式系統(tǒng)

STM32-I2C主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容STM32的I2C特性及架構(gòu)STM32的I2C框圖STM32的I2C通信STM32的I2C特性I2C(內(nèi)部集成電路)總線接口用作微控制器和I2C串行總線之間的接口。它提供多主模式功能,可以控制所有I2C總線特定的序列、協(xié)議、仲裁和時(shí)序。它支持標(biāo)準(zhǔn)和快速模式。它還與SMBus2.0兼容。STM32的I2C特性并行總線/I2C協(xié)議轉(zhuǎn)換器多主模式功能:同一接口既可用作主模式也可用作從模式I2C主模式特性:時(shí)鐘生成起始位和停止位生成I2C從模式特性:可編程I2C地址檢測(cè)雙尋址模式,可對(duì)2個(gè)從地址應(yīng)答停止位檢測(cè)STM32的I2C特性7位/10位尋址以及廣播呼叫的生成和檢測(cè)支持不同的通信速度:標(biāo)準(zhǔn)速度(高達(dá)100kHz)快速速度(高達(dá)400kHz)狀態(tài)標(biāo)志:發(fā)送/接收模式標(biāo)志字節(jié)傳輸結(jié)束標(biāo)志I2C忙碌標(biāo)志STM32的I2C特性錯(cuò)誤標(biāo)志:主模式下的仲裁丟失情況地址/數(shù)據(jù)傳輸完成后的應(yīng)答失敗檢測(cè)誤放的起始位和停止位禁止時(shí)鐘延長(zhǎng)后出現(xiàn)的上溢/下溢2個(gè)中斷向量:一個(gè)中斷由成功的地址/數(shù)據(jù)字節(jié)傳輸事件觸發(fā)一個(gè)中斷由錯(cuò)誤狀態(tài)觸發(fā)STM32的I2C特性及架構(gòu)軟件模擬協(xié)議:使用CPU直接控制通信引腳的電平,產(chǎn)生出符合通信協(xié)議標(biāo)準(zhǔn)的邏輯。硬件實(shí)現(xiàn)協(xié)議:由STM32的I2C片上外設(shè)專(zhuān)門(mén)負(fù)責(zé)實(shí)現(xiàn)I2C通信協(xié)議,只要配置好該外設(shè),它就會(huì)自動(dòng)根據(jù)協(xié)議要求產(chǎn)生通信信號(hào),收發(fā)數(shù)據(jù)并緩存起來(lái),CPU只要檢測(cè)該外設(shè)的狀態(tài)和訪問(wèn)數(shù)據(jù)寄存器,就能完成數(shù)據(jù)收發(fā)。這種由硬件外設(shè)處理I2C協(xié)議的方式減輕了CPU的工作,且使軟件設(shè)計(jì)更加簡(jiǎn)單。STM32的I2C框圖通信引腳時(shí)鐘控制邏輯數(shù)據(jù)控制邏輯整體控制邏輯STM32的I2C框圖1.通信引腳STM32芯片有多個(gè)I2C外設(shè),它們的I2C通信信號(hào)引出到不同的GPIO引腳上,使用時(shí)必須配置到這些指定的引腳。引腳I2C編號(hào)I2C1I2C2I2C3SCLPB6/PB8PF1/PB10/PH4PA8/PH7SDAPB7/PB9PF0/PB11/PH5PC9/PH8STM32的I2C框圖2.時(shí)鐘控制邏輯SCL線的時(shí)鐘信號(hào),由I2C接口根據(jù)時(shí)鐘控制寄存器(CCR)控制,控制的參數(shù)主要為時(shí)鐘頻率。可選擇I2C通信的“標(biāo)準(zhǔn)/快速”模式,這兩個(gè)模式分別I2C對(duì)應(yīng)100K/400Kbit/s的通信速率。在快速模式下可選擇SCL時(shí)鐘的占空比,可選Tlow/Thigh=2或Tlow/Thigh=16/9模式。CCR寄存器中12位的配置因子CCR,它與I2C外設(shè)的輸入時(shí)鐘源共同作用,產(chǎn)生SCL時(shí)鐘。STM32的I2C外設(shè)輸入時(shí)鐘源為PCLK1。STM32的I2C框圖2.時(shí)鐘控制邏輯計(jì)算時(shí)鐘頻率:標(biāo)準(zhǔn)模式: Thigh=CCR*TPCKL1Tlow

=CCR*TPCLK1快速模式中Tlow/Thigh=2時(shí): Thigh=CCR*TPCKL1Tlow

=2*CCR*TPCKL1快速模式中Tlow/Thigh=16/9時(shí): Thigh=9*CCR*TPCKL1

Tlow=16*CCR*TPCKL1STM32的I2C框圖2.時(shí)鐘控制邏輯計(jì)算時(shí)鐘頻率:例如,我們的PCLK1=42MHz,想要配置400Kbit/s的速率,計(jì)算方式如下: PCLK時(shí)鐘周期: TPCLK1=1/42000000

目標(biāo)SCL時(shí)鐘周期: TSCL=1/400000 SCL時(shí)鐘周期內(nèi)的高電平時(shí)間: THIGH=TSCL/3 SCL時(shí)鐘周期內(nèi)的低電平時(shí)間: TLOW=2*TSCL/3

計(jì)算CCR的值: CCR=THIGH/TPCLK1=35

該結(jié)果剛好為整數(shù),所以我們可直接把CCR取值為35,這樣I2C的SCL實(shí)際頻率即為400KHz。STM32的I2C框圖3.數(shù)據(jù)控制邏輯I2C的SDA信號(hào)主要連接到數(shù)據(jù)移位寄存器上,數(shù)據(jù)移位寄存器的數(shù)據(jù)來(lái)源及目標(biāo)是數(shù)據(jù)寄存器(DR)、地址寄存器(OAR)、PEC寄存器以及SDA數(shù)據(jù)線。當(dāng)向外發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)移位寄存器以“數(shù)據(jù)寄存器”為數(shù)據(jù)源,把數(shù)據(jù)一位一位地通過(guò)SDA信號(hào)線發(fā)送出去;當(dāng)從外部接收數(shù)據(jù)的時(shí)候,數(shù)據(jù)移位寄存器把SDA信號(hào)線采樣到的數(shù)據(jù)一位一位地存儲(chǔ)到“數(shù)據(jù)寄存器”中。STM32的I2C框圖4.整體控制邏輯整體控制邏輯負(fù)責(zé)協(xié)調(diào)整個(gè)I2C外設(shè),控制邏輯的工作模式根據(jù)我們配置的“控制寄存器(CR1/CR2)”的參數(shù)而改變。在外設(shè)工作時(shí),控制邏輯會(huì)根據(jù)外設(shè)的工作狀態(tài)修改“狀態(tài)寄存器(SR1和SR2)”,只要讀取這些寄存器相關(guān)的寄存器位,就可以了解I2C的工作狀態(tài)。STM32的I2C通信使用I2C外設(shè)通信時(shí),在通信的不同階段它會(huì)對(duì)“狀態(tài)寄存器(SR1及SR2)”的不同數(shù)據(jù)位寫(xiě)入?yún)?shù),通過(guò)讀取這些寄存器標(biāo)志來(lái)了解通信狀態(tài)。STM32的I2C通信分為:主發(fā)送器的通信過(guò)程主接收器的通信過(guò)程STM32的I2C通信1.主發(fā)送器的通信過(guò)程控制產(chǎn)生起始信號(hào)(S),當(dāng)發(fā)生起始信號(hào)后,它產(chǎn)生事件‘,并會(huì)對(duì)SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;發(fā)送設(shè)備地址并等待應(yīng)答信號(hào),若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”及“EV8”,這時(shí)SR1寄存器的“ADDR”位及“TXE”位被置1,ADDR為1表示地址已經(jīng)發(fā)送,TXE為1表示發(fā)送數(shù)據(jù)寄存器為空;STM32的I2C通信1.主發(fā)送器的通信過(guò)程往I2C的“數(shù)據(jù)寄存器DR”寫(xiě)入要發(fā)送的數(shù)據(jù),這時(shí)TXE位會(huì)被重置0,表示數(shù)據(jù)寄存器非空,I2C外設(shè)通過(guò)SDA信號(hào)線一位位把數(shù)據(jù)發(fā)送出去后,又會(huì)產(chǎn)生“EV8”事件,即TXE位被置1,重復(fù)這個(gè)過(guò)程,可以發(fā)送多個(gè)字節(jié)數(shù)據(jù);發(fā)送數(shù)據(jù)完成后,控制I2C設(shè)備產(chǎn)生一個(gè)停止信號(hào)(P),這個(gè)時(shí)候會(huì)產(chǎn)生EV8_2事件,SR1的TXE位及BTF位都被置1,表示通信結(jié)束。STM32的I2C通信2.主接收器的通信過(guò)程起始信號(hào)(S)是由主機(jī)端產(chǎn)生的,控制發(fā)生起始信號(hào)后,它產(chǎn)生事件“EV5”,并會(huì)對(duì)SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;發(fā)送設(shè)備地址并等待應(yīng)答信號(hào),若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”這時(shí)SR1寄存器的“ADDR”位被置1,表示地址已經(jīng)發(fā)送。STM32的I2C通信2.主接收器的通信過(guò)程從機(jī)端接收到地址后,開(kāi)始向主機(jī)端發(fā)送數(shù)據(jù)。當(dāng)主機(jī)接收到這些數(shù)據(jù)后,會(huì)產(chǎn)生“EV7”事件,SR1寄存器的RXNE被置1,表示接收數(shù)據(jù)寄存器非空,讀取該寄存器后,可對(duì)數(shù)據(jù)寄存器清空,以便接收下一次數(shù)據(jù)。此時(shí)可以控制I2C發(fā)送應(yīng)答信號(hào)(ACK)或非應(yīng)答信號(hào)(NACK),若應(yīng)答,則重復(fù)以上步驟接收數(shù)據(jù),若非應(yīng)答,則停止傳輸;發(fā)送非應(yīng)答信號(hào)后,產(chǎn)生停止信號(hào)(P),結(jié)束傳輸。小結(jié)STM32的I2C特性及架構(gòu)STM32的I2C框圖STM32的I2C通信ARM微控制器與嵌入式系統(tǒng)

BH1750光照度傳感器主講人:景妮琴北京電子科技職業(yè)學(xué)院BH1750概述1BH1750FVI是一款數(shù)字型光強(qiáng)度傳感器集成芯片。BH1750FVI是一種用于兩線式串行總線接口的數(shù)字型光強(qiáng)度傳感器集成電路。這種集成電路可以根據(jù)收集的光線強(qiáng)度數(shù)據(jù)來(lái)調(diào)整液晶或者鍵盤(pán)背景燈的亮度。利用它的高分辨率可以探測(cè)較大范圍的光強(qiáng)度變化。(1lx-65535lx,照度:?jiǎn)挝槐徽彰娣e上接收到的光通量,用E表示,單位是勒克斯(lx)1.支持I2CBUS接口(f/sModeSupport)。(使用過(guò))2.接近視覺(jué)靈敏度的光譜靈敏度特性(峰值靈敏度波長(zhǎng)典型值:560nm)。3.輸出對(duì)應(yīng)亮度的數(shù)字值,

對(duì)應(yīng)廣泛的輸入光范圍(相當(dāng)于1-65535lx)。4.支持1.8V邏輯輸入接口。5.光源依賴(lài)性弱(白熾燈,熒光燈,鹵素?zé)?,白光LED,日光燈)。6.有兩種可選的I2Cslave地址。7.可調(diào)的測(cè)量結(jié)果,影響較大的因素為光入口大小。8.使用這種功能能計(jì)算1.1lx到100000lx/分鐘的范圍。9.最小誤差變動(dòng)在±20%。10.受紅外線影響很小。BH1750概述1BH1750的內(nèi)部由光敏二極管、運(yùn)算放大器、ADC采集、晶振等組成。?PD,接近人眼反應(yīng)的光敏二極管。(Photodiodewithapproximatelyhumaneyeresponse.)?AMP,集成運(yùn)算放大器:將PD電流轉(zhuǎn)換為PD電壓。?ADC,模數(shù)轉(zhuǎn)換獲取16位數(shù)字?jǐn)?shù)據(jù)。?Logic+ICInterface(邏輯+IC界面),光強(qiáng)度計(jì)算和I2C總線接口,包括下列寄存器:數(shù)據(jù)寄存器→光強(qiáng)度數(shù)據(jù)寄存。初始值是:“0000_0000_0000_0000”。測(cè)量時(shí)間寄存器→時(shí)間測(cè)量數(shù)據(jù)寄存。初始值是:“0100_0101”。?OSC,內(nèi)部振蕩器(時(shí)鐘頻率典型值:320kHz)。該時(shí)鐘為內(nèi)部邏輯。BH1750概述1引腳說(shuō)明BH1750概述1引腳說(shuō)明BH1750概述1BH1750的內(nèi)部由光敏二極管、運(yùn)算放大器、ADC采集、晶振等組成。引腳號(hào)名稱(chēng)說(shuō)明1VCC供電電壓源正極(3.3V)2SCLIIC時(shí)鐘線,時(shí)鐘輸入引腳,由MCU輸出時(shí)鐘3SDAIIC數(shù)據(jù)線,雙向IO口,用來(lái)傳輸數(shù)據(jù)4ADDRIIC地址線,接GND時(shí)器件地址為0100011,接VCC時(shí)器件地址為10111005GND供電電壓源負(fù)極BH1750概述1BH1750FVI電氣參數(shù)。BH1750概述1BH1750FVI電氣參數(shù)。BH1750概述1BH1750BH1750概述1指令集合結(jié)構(gòu)指令功能代碼注釋斷電0000_0000無(wú)激活狀態(tài)。通電0000_0001等待測(cè)量指令。重置0000_0111重置數(shù)字寄存器值,重置指令在斷電模式下不起作用。連續(xù)H分辨率模式0001_0000在1lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為120ms。連續(xù)H分辨率模式20001_0001在0.5lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為120ms。連續(xù)L分辨率模式0001_0011在41lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為16ms。一次H分辨率模式0010_0000在1lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為120ms。測(cè)量后自動(dòng)設(shè)置為斷電模式。一次H分辨率模式20010_0001在0.5lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為120ms。測(cè)量后自動(dòng)設(shè)置為斷電模式。一次L分辨率模式0010_0011在41lx分辨率下開(kāi)始測(cè)量。測(cè)量時(shí)間一般為16ms。測(cè)量后自動(dòng)設(shè)置為斷電模式。改變測(cè)量時(shí)間(高位)01000_MT[7,6,5]改變測(cè)量時(shí)間※請(qǐng)參考“根據(jù)光學(xué)扇窗的影響調(diào)整測(cè)量結(jié)果?!备淖儨y(cè)量時(shí)間(低位)011_MT[4,3,2,1,0]改變測(cè)量時(shí)間※請(qǐng)參考“根據(jù)光學(xué)扇窗的影響調(diào)整測(cè)量結(jié)果?!盉H1750概述1測(cè)量模式說(shuō)明測(cè)量模式測(cè)量時(shí)間.分辨率H-分辨率模式2典型時(shí)間:120ms0.5lxH-分辨率模式典型時(shí)間:120ms.1lx.L-分辨率模式典型時(shí)間:16ms.4lx建議使用H分辨率模式。H分辨率模式下足夠長(zhǎng)的測(cè)量時(shí)間(積)能抑制一些噪聲包括(50Hz/60Hz)。同時(shí),H分辨率模式的分辨率在1lx下,適用于黑暗場(chǎng)合(少10lx)。H分辨率模式2同樣適用于黑暗場(chǎng)合下的檢測(cè)。BH1750概述1從“寫(xiě)指示”到“讀出測(cè)量結(jié)果”的測(cè)量時(shí)序?qū)嵗龑?shí)例:(ADDR='L')BH1750概述1I2C通信時(shí)序BH1750概述1I2C通信時(shí)序BH1750概述1I2C通信時(shí)序2一根是數(shù)據(jù)線SDA一根是時(shí)鐘線SCLI2C總線只有兩根雙向信號(hào)線。I2C協(xié)議—物理層2I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C協(xié)議—物理層2I2C協(xié)議—物理層連接到相同總線的IC數(shù)量受到總線的最大電容400pF限制。標(biāo)準(zhǔn)模式傳輸速率為100kbit/s快速模式為400kbit/s具有三種傳輸模式:高速模式下可達(dá)3.4Mbit/s,但目前大多I2C設(shè)備尚不支持高速模式。2I2C協(xié)議—協(xié)議層通信的起始和停止信號(hào)數(shù)據(jù)有效性響應(yīng)仲裁時(shí)鐘同步地址廣播I2C的協(xié)議規(guī)定了:2I2C協(xié)議—協(xié)議層起始和停止信號(hào):SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示停止信號(hào)。起始和停止信號(hào)一般由主機(jī)產(chǎn)生。2I2C協(xié)議—協(xié)議層I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。數(shù)據(jù)的有效性:2I2C協(xié)議—協(xié)議層地址及數(shù)據(jù)方向:I2C總線上的每個(gè)設(shè)備都有自己的獨(dú)立地址,主機(jī)發(fā)起通信時(shí),通過(guò)SDA信號(hào)線發(fā)送設(shè)備地址(SLAVE_ADDRESS)來(lái)查找從機(jī)。設(shè)備地址可以是7位或10位。1緊跟設(shè)備地址的一個(gè)數(shù)據(jù)位R/W用來(lái)表示數(shù)據(jù)傳輸方向,數(shù)據(jù)方向位為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù),該位為“0”時(shí)表示主機(jī)向從機(jī)寫(xiě)數(shù)據(jù)。22I2C協(xié)議—協(xié)議層響應(yīng)I2C的數(shù)據(jù)和地址傳輸都帶響應(yīng)。響應(yīng)包括“應(yīng)答(ACK)”和“非應(yīng)答(NACK)”兩種信號(hào)。01傳輸時(shí)主機(jī)產(chǎn)生時(shí)鐘,在第9個(gè)時(shí)鐘時(shí),數(shù)據(jù)發(fā)送端會(huì)釋放SDA的控制權(quán),由數(shù)據(jù)接收端控制SDA,若SDA為高電平,表示非應(yīng)答信號(hào)(NACK),低電平表示應(yīng)答信號(hào)(ACK)。022I2C協(xié)議—協(xié)議層地址及數(shù)據(jù)方向:

I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。01在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(可以是7位),接下來(lái)(第8位)是數(shù)據(jù)的傳送方向位,用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。02每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。03若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從機(jī)進(jìn)行尋址。04數(shù)據(jù)傳輸分為:主機(jī)寫(xiě)數(shù)據(jù)到從機(jī)主機(jī)由從機(jī)中讀數(shù)據(jù)寫(xiě)數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式2I2C協(xié)議—協(xié)議層主機(jī)寫(xiě)數(shù)據(jù)到從機(jī):主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變。起始信號(hào)——從機(jī)地址——讀寫(xiě)信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位2I2C協(xié)議—協(xié)議層主機(jī)由從機(jī)中讀數(shù)據(jù):主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)。起始信號(hào)——從機(jī)地址——讀寫(xiě)信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位2I2C協(xié)議—協(xié)議層在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫(xiě)方向位正好反相。寫(xiě)數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式:引腳I2C編號(hào)I2C1I2C2I2C3SCLPB6/PB8PF1/PB10/PH4PA8/PH7SDAPB7/PB9PF0/PB11/PH5PC9/PH8引腳定義VCC:3.3VGND:接地SCL:串行時(shí)鐘SDA:串行數(shù)據(jù)PB6PB7ADDR:從屬地址,接地3編程要點(diǎn):硬件連接主機(jī)寫(xiě)數(shù)據(jù)到從機(jī)010203根據(jù)I2C器件完成主設(shè)備發(fā)送數(shù)據(jù)到從設(shè)備,并接收從設(shè)備數(shù)據(jù)。04開(kāi)啟時(shí)鐘外設(shè)(GPIO,I2C);初始化對(duì)應(yīng)的GPIO引腳,在這里要注意的是一般I2c都配置成開(kāi)漏輸出就可以了;配置I2C結(jié)構(gòu)體參數(shù),初始化I2C,使能I2C。使能或者失能指定I2C的應(yīng)答功能;3編程要點(diǎn):軟件設(shè)計(jì)主機(jī)由從機(jī)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)3打開(kāi)GPIO時(shí)鐘配置GPIO的結(jié)構(gòu)體注意:Mode為AF,OType為OD配置復(fù)用GPIO為I2C1GPIO初始化打開(kāi)I2C2的時(shí)鐘配置I2C的結(jié)構(gòu)體,初始化結(jié)構(gòu)體使能I2CI2C初始化寫(xiě)數(shù)據(jù)BH1750的函數(shù)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)3打開(kāi)GPIO時(shí)鐘GPIO初始化RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOB,&GPIO_InitStructure);配置復(fù)用GPIO為I2C1配置GPIO的結(jié)構(gòu)體

注意:Mode為AF,OType為ODGPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_I2C1);GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_I2C1);編程要點(diǎn):軟件設(shè)計(jì)3打開(kāi)I2C1的時(shí)鐘I2C初始化使能I2C1配置I2C的結(jié)構(gòu)體,初始化結(jié)構(gòu)體RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);I2C_InitTypeDefI2C_InitStruct;//定義結(jié)構(gòu)體I2C_InitStruct.I2C_ClockSpeed=400000;//I2C的速率位400kHzI2C_InitStruct.I2C_Mode=I2C_Mode_I2C;//模式為I2CI2C_InitStruct.I2C_DutyCycle=I2C_DutyCycle_2;//占空比為2:1I2C_InitStruct.I2C_OwnAddress1=0x00;//主機(jī)自己的地址,這個(gè)可以隨意設(shè)置,因?yàn)橹挥幸粋€(gè)主機(jī)I2C_InitStruct.I2C_Ack=I2C_Ack_Enable;//使能ACKI2C_InitStruct.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;//地址為7為I2C_Init(I2C1,&I2C_InitStruct);//初始化結(jié)構(gòu)體I2CI2C_Cmd(I2C1,ENABLE);//使能I2C1使能I2C的應(yīng)答功能I2C_AcknowledgeConfig(I2C1,ENABLE);//使能I2C1的ACK編程要點(diǎn):軟件設(shè)計(jì)3寫(xiě)數(shù)據(jù)BH1750的函數(shù)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過(guò)程主接收器的通信過(guò)程STM32的I2C通信分為:使用I2C外設(shè)通信時(shí),在通信的不同階段它會(huì)對(duì)“狀態(tài)寄存器(SR1及SR2)”的不同數(shù)據(jù)位寫(xiě)入?yún)?shù),通過(guò)讀取這些寄存器標(biāo)志來(lái)了解通信狀態(tài)。3主發(fā)送器的通信過(guò)程控制產(chǎn)生起始信號(hào)(S)當(dāng)發(fā)生起始信號(hào)后,它產(chǎn)生事件“EV5”并會(huì)對(duì)SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;01編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過(guò)程發(fā)送設(shè)備地址并等待應(yīng)答信號(hào)若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”及“EV8”這時(shí)SR1寄存器的“ADDR”位及“TXE”位被置1,ADDR為1表示地址已經(jīng)發(fā)送,TXE為1表示發(fā)送數(shù)據(jù)寄存器為空;02編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過(guò)程03往I2C的“數(shù)據(jù)寄存器DR”寫(xiě)入要發(fā)送的數(shù)據(jù)這時(shí)TXE位會(huì)被重置0,表示數(shù)據(jù)寄存器非空,I2C外設(shè)通過(guò)SDA信號(hào)線一位位把數(shù)據(jù)發(fā)送出去后又會(huì)產(chǎn)生“EV8”事件,即TXE位被置1,重復(fù)這個(gè)過(guò)程,可以發(fā)送多個(gè)字節(jié)數(shù)據(jù);編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過(guò)程04發(fā)送數(shù)據(jù)完成后,控制I2C設(shè)備產(chǎn)生一個(gè)停止信號(hào)(P),這個(gè)時(shí)候會(huì)產(chǎn)生EV8_2事件,SR1的TXE位及BTF位都被置1,表示通信結(jié)束。編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信編程要點(diǎn):軟件設(shè)計(jì)3寫(xiě)數(shù)據(jù)BH1750的函數(shù)模仿OLED的寫(xiě)數(shù)據(jù)函數(shù)編程要點(diǎn):軟件設(shè)計(jì)3寫(xiě)數(shù)據(jù)BH1750的函數(shù)3主接收器的通信過(guò)程起始信號(hào)(S)是由主機(jī)端產(chǎn)生的,控制發(fā)生起始信號(hào)后,它產(chǎn)生事件“EV5”,并會(huì)對(duì)SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;01編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過(guò)程發(fā)送設(shè)備地址并等待應(yīng)答信號(hào),若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”這時(shí)SR1寄存器的“ADDR”位被置1,表示地址已經(jīng)發(fā)送。02編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過(guò)程從機(jī)端接收到地址后,開(kāi)始向主機(jī)端發(fā)送數(shù)據(jù)。當(dāng)主機(jī)接收到這些數(shù)據(jù)后,會(huì)產(chǎn)生“EV7”事件SR1寄存器的RXNE被置1,表示接收數(shù)據(jù)寄存器非空,讀取該寄存器后,可對(duì)數(shù)據(jù)寄存器清空,以便接收下一次數(shù)據(jù)。此時(shí)可以控制I2C發(fā)送應(yīng)答信號(hào)(ACK)或非應(yīng)答信號(hào)(NACK)03編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過(guò)程若應(yīng)答,則重復(fù)以上步驟接收數(shù)據(jù),若非應(yīng)答,則停止傳輸;發(fā)送非應(yīng)答信號(hào)后,產(chǎn)生停止信號(hào)(P),結(jié)束傳輸。04編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信編程要點(diǎn):軟件設(shè)計(jì)3讀數(shù)據(jù)BH1750的函數(shù)(1)判忙(2)發(fā)送起始信號(hào)(3)等待EV5事件發(fā)生(4)發(fā)送讀地址(5)等待EV6事件發(fā)生(6)等待EV7事件發(fā)生(ACK)(7)讀取一個(gè)字節(jié)(8)等待EV7事件發(fā)生(ACK)(9)再讀取一個(gè)字節(jié)(10)等待EV7_2事件發(fā)生(NACK)(11)發(fā)送停止信號(hào)while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)!=RESET);I2C_GenerateSTART(I2C1,ENABLE);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));I2C_Send7bitAddress(I2C1,0x47,I2C_Direction_Receiver);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));BUF[0]=I2C_ReceiveData(I2C1);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));BUF[1]=I2C_ReceiveData(I2C1);while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));I2C_GenerateSTOP(I2C1,ENABLE);編程要點(diǎn):軟件設(shè)計(jì)3處理數(shù)據(jù)BH1750的函數(shù)BH1750編程實(shí)驗(yàn)BH1750.c:配置函數(shù)/*ADDR接GND,即ADDR接‘L’,則地址為‘0100011’;若ADDR接‘H’,則地址為1011100*/BH1750編程實(shí)驗(yàn)BH1750.c:配置函數(shù)BH1750編程實(shí)驗(yàn)BH1750.c:寫(xiě)數(shù)據(jù)函數(shù)BH1750編程實(shí)驗(yàn)BH1750.c:讀數(shù)據(jù)函數(shù)BH1750編程實(shí)驗(yàn)BH1750.c:獲取光照度/**一次完整的數(shù)據(jù)傳輸為16位,高位先出,

數(shù)據(jù)/1.2就是光照度的值*//**顯示函數(shù)*/BH1750編程實(shí)驗(yàn)BH1750.h:庫(kù)函數(shù)BH1750編程實(shí)驗(yàn)main.c:主函數(shù)主講教師:景妮琴本節(jié)結(jié)束!ARM微控制器與嵌入式系統(tǒng)

ADC采集主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容ADC概述如何實(shí)現(xiàn)AD轉(zhuǎn)換ADC轉(zhuǎn)換原理ADC的基本概念STM32的ADCADC框圖ADC概述微控制器數(shù)字信號(hào)實(shí)際生活中模擬信號(hào)ADC:AnalogtoDigitalConverter模擬量到數(shù)字量的轉(zhuǎn)換器DAC:DigitaltoAnalogConverter數(shù)字量到模擬量的轉(zhuǎn)換器微控制器:自動(dòng)控制如何實(shí)現(xiàn)AD轉(zhuǎn)換?1位數(shù)據(jù)的輸出Uin>UrefUout:1Uin<UrefUout:0這個(gè)圖重新幫我做一個(gè)如何實(shí)現(xiàn)AD轉(zhuǎn)換?2位數(shù)據(jù)的輸出Uin<Uref1,Uout1:0,Uout2:0,Uout3:0Uin>Uref1,Uin<Uref2,Uout1:1,Uout2:0,Uout3:0Uin>Uref2,Uin<Uref3Uout1:1,Uout2:1,Uout3:0Uin>Uref3Uout1:1,Uout2:1,Uout3:1這兩個(gè)圖重新幫我做一個(gè)如何實(shí)現(xiàn)AD轉(zhuǎn)換?2位數(shù)據(jù)的輸出除了比較器還需要編碼電路,把生成的編碼對(duì)應(yīng)二位的數(shù)字信號(hào)10位ADC:1023個(gè)比較器,2^10-1最快的ADC這個(gè)圖重新幫我做一個(gè)逐次逼近式ADC的轉(zhuǎn)換原理1000000011000000這個(gè)圖重新幫我做一個(gè)ADC的基本概念分辨率ADC的分辨率是指使輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬電壓的變化量。常用二進(jìn)制的位數(shù)表示。例如12位ADC的分辨率就是12位,或者說(shuō)分辨率為滿(mǎn)刻度FS的1/4096。一個(gè)10V滿(mǎn)刻度的12位ADC能分辨輸入電壓變化最小值是10V×1/4096=2.4mV。ADC的基本概念輸出電壓范圍超過(guò)ADC的范圍怎么辦?搭建模擬電路ADC可以測(cè)量:-10V~10V根據(jù)基爾霍夫定律(KCL),節(jié)點(diǎn)流入的電流等于流出的電流(Vint–Vout)/R2+(3V3-Vout)/R1=Vout/R3Vout=(Vint+10)/6這個(gè)圖重新幫我做一個(gè)ADC的基本概念基準(zhǔn)參考電壓:VREF輸入電壓:VREF-≤VIN≤VREF+決定輸入電壓的引腳:VREF-、VREF+、VDDA、VSSAVSSA和VREF-接地,把VREF+和VDDA接3V3,得到ADC的輸入電壓范圍為:0~3.3V。STM32的ADCADC:12位逐次趨近型模數(shù)轉(zhuǎn)換器。三個(gè)獨(dú)立的ADC1/2/3可配置12位、10位、8位或6位分辨率每個(gè)ADC具有18個(gè)通道,其中外部通道16個(gè)在轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束以及發(fā)生模擬看門(mén)狗或溢出事件時(shí)產(chǎn)生中斷可獨(dú)立配置各通道采樣時(shí)間不連續(xù)采樣模式1-電壓輸入范圍2-輸入通道3-轉(zhuǎn)換順序4-觸發(fā)源5-轉(zhuǎn)換時(shí)間7-中斷8-電壓轉(zhuǎn)換ADC功能框圖6-數(shù)據(jù)寄存器ADC功能框圖1-電壓輸入范圍ADC功能框圖2-輸入通道每個(gè)ADC具有18個(gè)通道,其中外部通道16個(gè)。ADC功能框圖3-轉(zhuǎn)換順序規(guī)則通道組:相當(dāng)于正常運(yùn)行的程序,最多16個(gè)通道。注入通道組:相當(dāng)于中斷,最多4個(gè)通道。規(guī)則通道和注入通道的關(guān)系示意圖:規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道1注入通道1規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道NADC功能框圖4-觸發(fā)源ADC功能框圖5-轉(zhuǎn)換時(shí)間--轉(zhuǎn)換模式單次轉(zhuǎn)換模式:在單次轉(zhuǎn)換模式下,ADC執(zhí)行一次轉(zhuǎn)換。連續(xù)轉(zhuǎn)換模式:在連續(xù)轉(zhuǎn)換模式下,ADC結(jié)束一個(gè)轉(zhuǎn)換后立即啟動(dòng)一個(gè)新的轉(zhuǎn)換。掃描模式:此模式用于掃描一組模擬通道。每次轉(zhuǎn)換結(jié)束后,會(huì)自動(dòng)轉(zhuǎn)換該組中的下一個(gè)通道。ADC功能框圖5-轉(zhuǎn)換時(shí)間ADC_CLKMax:36MHzADC功能框圖5-轉(zhuǎn)換時(shí)間ADC_CLK=APB2_CLK/ADC_PrescalerADC_CLKMax:36MHzAPB2_CLKMax:84MHz

ADC_PrescalerMin:4ADC_CLKMax=21MHzADC功能框圖5-轉(zhuǎn)換時(shí)間轉(zhuǎn)換時(shí)間:Tconv=采樣時(shí)間+12個(gè)周期(12位)采樣時(shí)間:ADC需要若干個(gè)ADC_CLK周期完成對(duì)輸入的模擬量進(jìn)行采樣,每個(gè)通道可以分別用不同的時(shí)間采樣。其中采樣周期最小是3個(gè),即如果我們要達(dá)到最快的采樣,那么應(yīng)該設(shè)置采樣周期為3個(gè)周期,這里說(shuō)的周期就是1/ADC_CLK。Tconv=3+12=15周期=15/21us=0.71usADC功能框圖5-轉(zhuǎn)換時(shí)間采樣率,決定了ADC能采集多大頻率的信號(hào)ADC功能框圖6-數(shù)據(jù)寄存器ADC轉(zhuǎn)換后的數(shù)據(jù)根據(jù)轉(zhuǎn)換組的不同,規(guī)則組的數(shù)據(jù)放在ADC_DR

寄存器,注入組的數(shù)據(jù)放在JDRx。如果是使用雙重或者三重模式那規(guī)矩組的數(shù)據(jù)是存放在通用規(guī)則寄存器ADC_CDR

內(nèi)的ADC功能框圖7-中斷ADC功能框圖8-電壓轉(zhuǎn)換:怎么根據(jù)數(shù)據(jù)量算出模擬量電壓輸入范圍為:0~3.3V分辨率為12位最小精度為:3.3/2^12設(shè)數(shù)字量為X,則有模擬量

Y=(3.3/2^12)*X小結(jié)ADC概述如何實(shí)現(xiàn)AD轉(zhuǎn)換ADC轉(zhuǎn)換原理ADC的基本概念STM32的ADCADC框圖ARM微控制器與嵌入式系統(tǒng)

STM32-ADC編程要點(diǎn)主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容ADC硬件設(shè)計(jì)STM32-ADC編程要點(diǎn)ADC結(jié)構(gòu)體ADC庫(kù)函數(shù)ADC中斷主函數(shù)計(jì)算電壓值A(chǔ)DC硬件設(shè)計(jì)使用一個(gè)滑動(dòng)變阻器,將中間端子接到ADC通道的GPIO(從表中任選)通道號(hào)ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5編程要點(diǎn)獨(dú)立模式-單通道-中斷(不使用DMA)1-打開(kāi)GPIO時(shí)鐘,ADC時(shí)鐘2-ADC通道端口配置3-配置ADC4-配置通道的轉(zhuǎn)換順序、配置中斷、打開(kāi)ADC、觸發(fā)ADC開(kāi)始轉(zhuǎn)換5-編寫(xiě)main函數(shù),中斷服務(wù)函數(shù),獲取ADC轉(zhuǎn)換結(jié)果編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)1、開(kāi)啟GPIO時(shí)鐘、ADC時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模擬模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空輸入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_Resolution:配置ADC的分辨率,可選的分辨率有12位、10位、8位和6位。ADC_Resolution_12b,ADC_Resolution_10b,ADC_Resolution_8b,ADC_Resolution_6bADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;//ADC分辨率ADC_InitTypeDef初始化結(jié)構(gòu)體ScanConvMode:配置是否使用掃描??蛇x參數(shù)為ENABLE和DISABLE。如果是單通道AD轉(zhuǎn)換使用DISABLE,如果是多通道AD轉(zhuǎn)換使用ENABLE。ADC_InitStructure.ADC_ScanConvMode=DISABLE;//單通道不掃描ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_ContinuousConvMode:配置是啟動(dòng)自動(dòng)連續(xù)轉(zhuǎn)換還是單次轉(zhuǎn)換可選參數(shù)為ENABLE和DISABLE使用ENABLE配置為使能自動(dòng)連續(xù)轉(zhuǎn)換;使用DISABLE配置為單次轉(zhuǎn)換,轉(zhuǎn)換一次后停止需要手動(dòng)控制才重新啟動(dòng)轉(zhuǎn)換。ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//連續(xù)轉(zhuǎn)換ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_ExternalTrigConvEdge:外部觸發(fā)極性選擇如果使用外部觸發(fā),可以選擇觸發(fā)的極性,可選有禁止觸發(fā)檢測(cè)、上升沿觸發(fā)檢測(cè)、下降沿觸發(fā)檢測(cè)以及上升沿和下降沿均可觸發(fā)檢測(cè)。

ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止外部邊沿觸發(fā)ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_ExternalTrigConv:外部觸發(fā)選擇實(shí)際上,我們一般使用軟件自動(dòng)觸發(fā)。ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_Ext_IT11;//使用軟件觸發(fā),此值隨便賦值即可ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_DataAlign:轉(zhuǎn)換結(jié)果數(shù)據(jù)對(duì)齊模式可選右對(duì)齊ADC_DataAlign_Right,左對(duì)齊ADC_DataAlign_Left。一般我們選擇右對(duì)齊模式。ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

//數(shù)據(jù)右對(duì)齊 ADC_InitTypeDef初始化結(jié)構(gòu)體ADC_NbrOfChannel:AD轉(zhuǎn)換通道數(shù)目。Thisparametermustrangefrom1to16.ADC_InitStructure.ADC_NbrOfConversion=1;//轉(zhuǎn)換通道1個(gè)ADC_CommonInitTypeDef通用初始化結(jié)構(gòu)體ADC_Mode:ADC工作模式選擇,有獨(dú)立模式、雙重模式以及三重模式ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;//獨(dú)立ADC模式ADC_CommonInitTypeDef通用初始化結(jié)構(gòu)體ADC_Prescaler:ADC時(shí)鐘分頻系數(shù)選擇ADC時(shí)鐘是由PCLK2分頻而來(lái),分頻系數(shù)決定ADC時(shí)鐘頻率,可選的分頻系數(shù)為2、4、6和8。ADC最大時(shí)鐘配置為36MHz。

ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;//時(shí)鐘為fpclkx分頻ADC_CommonInitTypeDef通用初始化結(jié)構(gòu)體ADC_DMAAccessMode:DMA模式設(shè)置,只有在雙重或者三重模式才需要設(shè)置,可以設(shè)置三種模式

ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;//禁止DMA直接訪問(wèn)模式ADC_CommonInitTypeDef通用初始化結(jié)構(gòu)體ADC_TwoSamplingDelay:2個(gè)采樣階段之前的延遲,僅適用于雙重或三重交錯(cuò)模式。ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_20Cycles;//采樣時(shí)間間隔 ADC庫(kù)函數(shù)ConfiguresADC1Channel2as:firstconvertedchannelwithan7.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_7Cycles5);ADC庫(kù)函數(shù)ConfiguresADC1Channel8as:secondconvertedchannelwithan1.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_8,2,ADC_SampleTime_1Cycles5);編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)3、ADC配置編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)4、配置通道的轉(zhuǎn)換順序、配置中斷、打開(kāi)ADC、觸發(fā)ADC開(kāi)始轉(zhuǎn)換ADC中斷主函數(shù)計(jì)算電壓值5、編寫(xiě)main函數(shù),中斷服務(wù)函數(shù),獲取ADC轉(zhuǎn)換結(jié)果獲取ADC轉(zhuǎn)換結(jié)果uint16_tADC_Get_Value(ADC_TypeDef*adcx,uint16_tchx,uint8_tRauk){ //為選定的ADC常規(guī)通道配置相應(yīng)的*排序器和采樣時(shí)間 ADC_RegularChannelConfig(adcx,chx,Rauk,ADC_SampleTime_480Cycles); //軟件啟動(dòng)ADC ADC_SoftwareStartConv(adcx); while(!ADC_GetFlagStatus(adcx,ADC_FLAG_EOC)); ADC_ClearFlag(adcx,ADC_FLAG_EOC); returnADC_GetConversionValue(adcx);}小結(jié)ADC硬件設(shè)計(jì)STM32-ADC編程要點(diǎn)ADC結(jié)構(gòu)體ADC庫(kù)函數(shù)ADC中斷主函數(shù)計(jì)算電壓值A(chǔ)RM微控制器與嵌入式系統(tǒng)

STM32-ADC編程實(shí)驗(yàn)主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容ADC硬件設(shè)計(jì)STM32-ADC編程要點(diǎn)ADC中斷主函數(shù)計(jì)算電壓值A(chǔ)DC硬件設(shè)計(jì)使用一個(gè)滑動(dòng)變阻器,將中間端子接到ADC通道的GPIO(從表中任選)通道號(hào)ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5編程要點(diǎn)獨(dú)立模式-單通道-中斷(不使用DMA)1-打開(kāi)GPIO時(shí)鐘,ADC時(shí)鐘2-ADC通道端口配置3-配置ADC4-配置通道的轉(zhuǎn)換順序、配置中斷、打開(kāi)ADC、觸發(fā)ADC開(kāi)始轉(zhuǎn)換5-編寫(xiě)main函數(shù),中斷服務(wù)函數(shù),獲取ADC轉(zhuǎn)換結(jié)果編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)1、開(kāi)啟GPIO時(shí)鐘、ADC時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模擬模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空輸入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)3、ADC配置編程要點(diǎn):獨(dú)立模式-單通道-中斷(不使用DMA)4、配置通道的轉(zhuǎn)換順序、配置中斷、打開(kāi)ADC、觸發(fā)ADC開(kāi)始轉(zhuǎn)換ADC中斷主函數(shù)計(jì)算電壓值5、編寫(xiě)main函數(shù),中斷服務(wù)函數(shù),獲取ADC轉(zhuǎn)換結(jié)果小結(jié)ADC硬件設(shè)計(jì)STM32-ADC編程要點(diǎn)ADC中斷主函數(shù)計(jì)算電壓值STM32嵌入式操作系統(tǒng)介紹主講教師:吳友蘭常見(jiàn)的操作系統(tǒng)1操作系統(tǒng)的基本結(jié)構(gòu)2UserApplicattionOperatingSystemHardware是一種為應(yīng)用程序提供服務(wù)的系統(tǒng)軟件。操作系統(tǒng)從層次上看,操作系統(tǒng)位于計(jì)算機(jī)硬件之上,軟件之下。嵌入式系統(tǒng)介紹3是嵌入式系統(tǒng)的三個(gè)基本要素“嵌入性”“專(zhuān)用性”“計(jì)算機(jī)系統(tǒng)”嵌入式系統(tǒng)概念以應(yīng)用為中心以計(jì)算機(jī)技術(shù)為基礎(chǔ)軟硬件可裁剪適用于對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)01020304廣義定義:任何一個(gè)非計(jì)算機(jī)的計(jì)算系統(tǒng)嵌入式系統(tǒng)中常見(jiàn)的兩種編程方式4前后臺(tái)系統(tǒng)嵌入式操作系統(tǒng)前后臺(tái)模式應(yīng)用程序5前后臺(tái)模式的特點(diǎn)應(yīng)用程序通常是一個(gè)無(wú)限的循環(huán),在循環(huán)中,通過(guò)調(diào)用相應(yīng)的處理函數(shù)完成相應(yīng)的操作,這部分可以看作為后臺(tái)行為。中斷服務(wù)程序接收異步中斷,來(lái)通知后臺(tái),后臺(tái)收到中斷請(qǐng)求后進(jìn)行處理。嵌入式實(shí)時(shí)操作系統(tǒng)的特點(diǎn)61與硬件相關(guān)的底層驅(qū)動(dòng)軟件2系統(tǒng)內(nèi)核3設(shè)備驅(qū)動(dòng)接口4通信協(xié)議5圖形界面嵌入式操作系統(tǒng)是一種用途廣泛的系統(tǒng)軟件6……負(fù)責(zé)嵌入式系統(tǒng)的全部軟、硬件資源的分配、任務(wù)調(diào)度、控制、協(xié)調(diào)并發(fā)活動(dòng)。嵌入式實(shí)時(shí)操作系統(tǒng)的特點(diǎn)6FreeRTOS

uC/OS-II

RT-thread

WindowCEVxworks目前嵌入式領(lǐng)域廣泛使用的操作系統(tǒng)有兩種開(kāi)發(fā)模式對(duì)比7兩種開(kāi)發(fā)模式選擇8前后臺(tái)模式嵌入式操作系統(tǒng)產(chǎn)品功能簡(jiǎn)單01開(kāi)發(fā)成員不多02不需要復(fù)雜的外設(shè)(如USB/網(wǎng)絡(luò)/FS等…)03成本要求非??量?4產(chǎn)品功能復(fù)雜01團(tuán)隊(duì)協(xié)作開(kāi)發(fā)02需要使用復(fù)雜的外設(shè)和功能(如USB/網(wǎng)絡(luò)/FS等…)03硬件成本允許增加OS的資源04兩種開(kāi)發(fā)模式選擇8基于STM32平臺(tái)且滿(mǎn)足實(shí)時(shí)控制要求操作系統(tǒng),有以下5種可供移植選擇分別為:μClinuxμC/OSeCosFreeRTOSrt-thread0102030405μClinux操作系統(tǒng)901μClinux是一種優(yōu)秀的嵌入式Linux版本μClinux結(jié)構(gòu)復(fù)雜移植相對(duì)困難內(nèi)核也較大實(shí)時(shí)也差一些若開(kāi)發(fā)的嵌入式產(chǎn)品注重文件

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論