參考教案物聯(lián)1601鴻_第1頁
參考教案物聯(lián)1601鴻_第2頁
參考教案物聯(lián)1601鴻_第3頁
參考教案物聯(lián)1601鴻_第4頁
參考教案物聯(lián)1601鴻_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2018 年物聯(lián)網(wǎng)實(shí)習(xí)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級(講臺(tái)) :物聯(lián) 1601:鴻學(xué)號(hào):41601629裝 訂 時(shí) 間:2018 年7 月18 日科技大學(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018 年7 月18日實(shí)驗(yàn)名稱: 口位操作應(yīng)用(流水燈)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?.2.3.4.5.結(jié)合 MDK5,掌握 STM32 的編程與調(diào)試步驟。能理解 STM32 庫函數(shù)和寄存器編程的學(xué)會(huì)使用 I/O 口進(jìn)行輸出的方法。能看懂控制輸出的關(guān)鍵代碼。能獨(dú)立完成最小系統(tǒng)板與模塊間的硬件接線。實(shí)驗(yàn)材料:硬件準(zhǔn)備STM32 最小系統(tǒng)板一塊。流水燈模塊(發(fā)光二極

2、管 8 個(gè),330電阻 8 個(gè),排針 9P,萬能板一塊)。杜邦線 9 根。SWD 仿真器一個(gè)(或 CH340 串口線一根)。準(zhǔn)備:1.2.3.4.前提已經(jīng)安裝好 MDK5,并成功。打開“庫函數(shù)”文件夾,將其中的“LED”文件夾。返回主目錄,打開“2. 流水燈”文件夾中的“USER”文件夾,粘貼。返回“2. 流水燈”文件夾,進(jìn)入“USER”文件夾啟動(dòng)工程文件。實(shí)驗(yàn)內(nèi)容:1. 初始化SysTick 定時(shí)器,為系統(tǒng)分配時(shí)鐘等。初始化外設(shè),將 PA.0PA.7 引腳通過 void LED_Init(void)函數(shù)進(jìn)行初始化,將上述的引腳設(shè)置為通用的 I/O 口,推挽輸出。循環(huán)改變引腳的電平特性。8 個(gè)

3、 LED,采用共陽設(shè)計(jì),當(dāng)引腳輸出低電平時(shí),LED 燈被點(diǎn)亮;當(dāng)引腳輸出時(shí),LED 燈熄滅。實(shí)驗(yàn)過程: 初始化 LED,設(shè)置 PA0-PA7 為輸出口:void LED_Cfg(void)GPIO_InitTypeDef led_gpio; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/ 使能端口A 的時(shí)鐘/* LED I/O 配置 */led_gpio.GPIO_Pin= GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4 | GPIO_Pin_5 | GPI

4、O_Pin_6 | GPIO_Pin_7;led_gpio.GPIO_Mode= GPIO_Mode_Out_PP;led_gpio.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &led_gpio);/ 通用推挽輸出/ 2MHz/* 配置完成后關(guān)閉所有 LED */LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; LED5_OFF; LED6_OFF; LED7_OFF;LED8_OFF; 設(shè)置 LED 的輸出狀態(tài),并進(jìn)行#define,使其更容易使用。/* 控制 LED1-LED4(直接操作寄存器) */#def

5、ine LED1_TOGGLE反轉(zhuǎn)#define LED1_OFF #define LED1_ONGPIOA-ODR = GPIO_Pin_0/ PA0 輸出相反狀態(tài)- LED1 狀態(tài)GPIOA-BSRR = GPIO_Pin_0GPIOA-BRR= GPIO_Pin_0/ PA0 輸出- LED1 關(guān)/ PA0 輸出低電平LED1 開#define LED2_TOGGLE#define LED2_OFF #define LED2_ONGPIOA-ODR = GPIO_Pin_1GPIOA-BSRR = GPIO_Pin_1 GPIOA-BRR= GPIO_Pin_1/ LED2 狀態(tài)反轉(zhuǎn)/

6、LED2 關(guān)/ LED2 開#define LED3_TOGGLE#define LED3_OFF #define LED3_ONGPIOA-ODR = GPIO_Pin_2GPIOA-BSRR = GPIO_Pin_2 GPIOA-BRR= GPIO_Pin_2#define LED4_TOGGLE#define LED4_OFF #define LED4_ONGPIOA-ODR = GPIO_Pin_3GPIOA-BSRR = GPIO_Pin_3 GPIOA-BRR= GPIO_Pin_3/* 控制 LED5-LED8(調(diào)用庫函數(shù)) */#define LED5_OFF#define L

7、ED5_ONGPIO_SetBits(GPIOA, GPIO_Pin_4)/ PA4 輸出- LED5 關(guān)GPIO_ResetBits(GPIOA, GPIO_Pin_4)/ PA4 輸出低電平 - LED5 開#define LED6_OFF#define LED6_ONGPIO_SetBits(GPIOA, GPIO_Pin_5)GPIO_ResetBits(GPIOA, GPIO_Pin_5)#define LED7_OFF#define LED7_ONGPIO_SetBits(GPIOA, GPIO_Pin_6)GPIO_ResetBits(GPIOA, GPIO_Pin_6)#def

8、ine LED8_OFF#define LED8_ONGPIO_SetBits(GPIOA, GPIO_Pin_7)GPIO_ResetBits(GPIOA, GPIO_Pin_7) 在主函數(shù)中設(shè)置 while 循環(huán),使其循環(huán)開關(guān)。while (1)LED1_ON;Delay_ms(200); LED1_OFF; LED2_ON;Delay_ms(200); LED2_OFF; LED3_ON;Delay_ms(200); LED3_OFF; LED4_ON;Delay_ms(200); LED4_OFF; LED5_ON;Delay_ms(200); LED5_OFF; LED6_ON;De

9、lay_ms(200); LED6_OFF; LED7_ON;Delay_ms(200); LED7_OFF; LED8_ON;Delay_ms(200); LED8_OFF;在此過程中需要實(shí)現(xiàn)基于 STM32SysTick 定時(shí)器的精確延時(shí),分別實(shí)現(xiàn)了 SysTick 定時(shí)器的初始化,以及毫秒(ms)、微妙(us)級別的精確延時(shí)。#include delay.hsic u8fac_us = 0;/us 延時(shí)倍乘數(shù)sic u16 fac_ms = 0;/ms 延時(shí)倍乘數(shù)void delay_init()/初始化延遲函數(shù),SYSTICK 的時(shí)鐘固定為 HCLK 時(shí)鐘的 1/8SysTick_CL

10、KSourceConfig(SysTick_CLKSource_HCLK_Div8);/選擇外部時(shí)鐘 HCLK/8fac_us=SystemCoreClock/8000000;/為系統(tǒng)時(shí)鐘的 1/8fac_ms=(u16)fac_us*1000;/非 ucos 下,代表每個(gè) ms 需要的 systick 時(shí)鐘數(shù)void delay_us(u32 nus)/nus 為要延時(shí)的 us 數(shù).u32 temp;SysTick-LOAD=nus*fac_us; /時(shí)間加載SysTick-VAL=0 x00;/清空計(jì)數(shù)器SysTick-CTRL|=SysTick_CTRL_ENABLE_Msk ;dote

11、mp=SysTick-CTRL;while(temp&0 x01&!(temp&(1CTRL&=SysTick_CTRL_ENABLE_Msk;/開始倒數(shù)/關(guān)閉計(jì)數(shù)器SysTick-VAL =0X00;/清空計(jì)數(shù)器/SysTick-LOAD 為 24 位寄存器,所以,最大延時(shí)為:/nms=0 x*8*1000/SYSCLKvoid delay_ms(u16 nms)/SYSCLKu32 temp;為 Hz,nms為 ms,對 72M 條件下,nmsLOAD=(u32)nms*fac_ms;/時(shí)間加載(SysTick-LOAD 為 24bit)SysTick-VAL =0 x00;/清空計(jì)數(shù)器S

12、ysTick-CTRL|=SysTick_CTRL_ENABLE_Msk ;dotemp=SysTick-CTRL;while(temp&0 x01&!(temp&(1CTRL&=SysTick_CTRL_ENABLE_Msk;/開始倒數(shù)/關(guān)閉計(jì)數(shù)器SysTick-VAL =0X00;/清空計(jì)數(shù)器測試:程序成功運(yùn)行后,8 個(gè) LED 燈會(huì)循環(huán)依次點(diǎn)亮熄滅。循環(huán)亮燈過程科技大學(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)驗(yàn)名稱: I/O 口與周邊設(shè)備(普通按鍵)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?.2.3.學(xué)習(xí) GPIO 口輸出的基本操作。掌握如

13、何設(shè)定 GPIO 口為通用 I/O 口。掌握利用SysTick 定時(shí)器實(shí)現(xiàn)精確延時(shí)。實(shí)驗(yàn)材料:1. STM32 最小系統(tǒng)板一塊。2.3.4.流水燈模塊。普通按鍵模塊。蜂鳴器模塊。5. S SWD 仿真器一個(gè)(或 CH340 串口線一根)。準(zhǔn)備:1. 前提已經(jīng)安裝好 MDK5,并成功。2. 如流水燈實(shí)驗(yàn),將 led、bell 和 key 對應(yīng)的文件夾拷到“USER”文件夾中,并在工程中添加。實(shí)驗(yàn)內(nèi)容:1. 初始化SysTick 定時(shí)器、LED,為系統(tǒng)分配時(shí)鐘等。2. 將 PB.8PB.11 引腳通過 Scan_Key_Configuration()函數(shù)進(jìn)行初始化,將上述的引腳設(shè)置為通用的 I/O

14、 口,上拉輸入。3. 通過直接操作庫函數(shù)方式或位帶操作方式來PB.8PB.11 引腳狀態(tài)來檢測按鍵是否按下。當(dāng)有按下按鍵時(shí),保存相應(yīng)鍵值。主函數(shù)中根據(jù)鍵值來控制相應(yīng)的 LED 亮滅。實(shí)驗(yàn)過程: 初始化 LED 燈、按鍵和蜂鳴器,設(shè)置控制 LED 和蜂鳴器的管腳為推挽輸出,檢測按鍵的管腳為上拉輸入。在這里設(shè)置 PA0-PA7 為 LED 燈的輸出口,不過用不了這么多,設(shè)置 PB0控制蜂鳴器,PB8-PB11 為按鍵的輸void LED_Cfg(void)GPIO_InitTypeDef led_gpio;。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,

15、ENABLE);/ 使能端口A 的時(shí)鐘/* LED I/O 配置 */led_gpio.GPIO_Pin= GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;led_gpio.GPIO_Mode= GPIO_Mode_Out_PP;led_gpio.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &led_gpio);/ 通用推挽輸出/ 2MHz/* 配置完成后關(guān)閉所有 LED */LED1_OFF

16、; LED2_OFF; LED3_OFF; LED4_OFF; LED5_OFF; LED6_OFF; LED7_OFF;LED8_OFF;void Bell_Cfg(void)GPIO_InitTypeDef bell_gpio; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/* 蜂鳴器 I/O 配置 */bell_gpio.GPIO_Pin= GPIO_Pin_0;bell_gpio.GPIO_Mode= GPIO_Mode_Out_PP;bell_gpio.GPIO_Speed = GPIO_Speed_2MHz; GPIO_

17、Init(GPIOB, &bell_gpio);/ 通用推挽輸出/ 2MHz/* 配置完成后關(guān)閉蜂鳴器 */BELL_OFF;void Key_Cfg(void)GPIO_InitTypeDef key_gpio; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/* 按鍵 I/O 配置 */key_gpio.GPIO_Pin= GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;key_gpio.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOB, &

18、key_gpio);/ 上拉輸入 在他們所對應(yīng)的頭文件 key.h bell.h led.h 中,將幾個(gè)比較重要的庫函數(shù)進(jìn)行#define 重定義,方便編程使用。讀按鍵使用 GPIO_ReadInputDataBit 庫函數(shù)。#define KEY1_STAGPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) / 讀按鍵 Key1 狀態(tài)#define KEY2_STAGPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) / 讀按鍵 Key2 狀態(tài)#define KEY3_STAGPIO_ReadInputDataBit(GPIOB, GP

19、IO_Pin_10) / 讀按鍵 Key3 狀態(tài)#define KEY4_STAGPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) / 讀按鍵 Key4 狀態(tài)還是使用 GPIO_SetBits 和 GPIO_ResetBits 庫函數(shù)來對控制蜂鳴器的管腳置 1 和 0。#define BELL_ON#define BELL_OFF #define BELL_TOGGLEGPIO_SetBits(GPIOB, GPIO_Pin_0)GPIO_ResetBits(GPIOB, GPIO_Pin_0) GPIOB-ODR = GPIO_Pin_0/ 蜂鳴器響/ 蜂鳴器

20、停/ 狀態(tài)反轉(zhuǎn)至于 LED,可以參考流水燈實(shí)驗(yàn),使用 GPIO_SetBits 和 GPIO_ResetBits 庫函數(shù)來控制,在這里就不再解釋。下面開始進(jìn)入主程序,要使用 while 循環(huán)檢測按鍵是否有按下,然后執(zhí)行相應(yīng)的操作。在此過程中還需要進(jìn)行消抖,即檢測到按鍵按下后,要等一會(huì)再次檢測,避免因按鍵抖動(dòng)導(dǎo)致的電位變化,引起相應(yīng)操作。while (1)/* 按鍵 Key1 和 Key3 */if (KEY1_STA = KEY_DN) | (KEY3_STA = KEY_DN)/ 檢測是否有按鍵按下Delay_ms(1);/ 延時(shí)消抖if (KEY1_STA = KEY_DN)while (

21、KEY1_STA = KEY_DN); LED1_TOGGLE;else if (KEY3_STA = KEY_DN)while (KEY3_STA = KEY_DN); BELL_TOGGLE;/ 確認(rèn)是否按鍵 Key1 按下/ 等待按鍵/ 確認(rèn)是否按鍵 Key3 按下/ 等待按鍵/* 按鍵 Key2 和 Key4 */if (KEY2_STA = KEY_DN) | (KEY4_STA = KEY_DN)/ 檢測是否有按鍵按下Delay_ms(1);/ 延時(shí)消抖if (KEY2_STA = KEY_DN)LED2_ON;while (KEY2_STA = KEY_DN); LED2_OFF

22、;else if (KEY4_STA = KEY_DN)/ 確認(rèn)是否按鍵 Key2 按下/ 確認(rèn)是否按鍵 Key4 按下BELL_ON;while (KEY4_STA = KEY_DN); BELL_OFF;消抖的過程中,需要使用延時(shí)函數(shù)。不過這次沒有用到定時(shí)器,而是使用了簡單的循環(huán)進(jìn)行計(jì)算延時(shí)。void Delay_ms(u16_t u16_Time_ms)u16_t i, j;/ 循環(huán)計(jì)數(shù)變量for (i = 0; i u16_Time_ms; i+)for (j = 0; j DR);/接收到的數(shù)據(jù)if(USART_RX_STA&0 x8000)=0)/接收未完成if(USART_RX_

23、STA&0 x4000)/接收到了 0 x0dif(Res!=0 x0a)USART_RX_STA=0;/接收錯(cuò)誤,重新開始else USART_RX_STA|=0 x8000;else /還沒收到 0X0D/接收完成了if(Res=0 x0d)USART_RX_STA|=0 x4000;else USART_RX_BUFUSART_RX_STA&0X3USART_RX_STA+;=Res ;if(USART_RX_STA(USART_REC_LEN-1)USART_RX_STA=0;/ 接 收數(shù)據(jù)錯(cuò)誤,重新開始接收#ifdef OS_TICKS_PER_SEC OSExit();#endif

24、/如果時(shí)鐘節(jié)拍數(shù)定義了,說明要使用 ucosII 了.在 main 函數(shù)中,使用 while 循環(huán)使程序一直運(yùn)行,借助接收狀態(tài)標(biāo)記 USART_RX_STA 的值,判斷是否有輸入以及它的長度值。如果有輸入,則依次將緩沖區(qū)的內(nèi)容寫入 DR 并發(fā)送出去。否則就過一段時(shí)間提示程序正在運(yùn)行。while(1)if(USART_RX_STA&0 x8000)len=USART_RX_STA&0 x3 ;/得到此次接收到的數(shù)據(jù)長度 prf(rn 您發(fā)送的消息為:rn);for(t=0;tDR=USART_RX_BUFt;while(USART1-SR&0X40)=0);/等待發(fā)送結(jié)束prf(rnrn);/U

25、SART_RX_STA=0;換行elsetimes+;if(times%5000=0)prf(rn 串口實(shí)驗(yàn)rn);if(times%200=0)prf(請輸入數(shù)據(jù),以回車鍵結(jié)束rn); if(times%30=0)LED0=!LED0;/閃爍 LED,提示系統(tǒng)正在運(yùn)行. delay_ms(10);把程序到單片機(jī),將 CH340 的 USB 端接電腦,接單片機(jī)的 5V,低電平接單片機(jī)的 GND,TXD 接單片機(jī)的 PA10,RXD 接單片機(jī)的 PA9.打開串口調(diào)試助手,設(shè)置好程序中相同的波特率,隨便輸入一個(gè)字符串,進(jìn)行調(diào)試。測試:調(diào)試助手的屏幕會(huì)顯示你發(fā)送給單片機(jī), 單片機(jī)又自動(dòng)傳回的字符串。

26、科技大學(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)驗(yàn)名稱: 定時(shí)器中斷實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)使用 STM32 的通用定時(shí)器。結(jié)合中斷理解定時(shí)器的具體應(yīng)用。實(shí)驗(yàn)材料:硬件準(zhǔn)備:STM32 最小系統(tǒng)板一塊。LED 燈 1 個(gè),杜邦線 2 根。SWD 仿真器一個(gè)(或 CH340 串口線一根)。準(zhǔn)備:1. MDK5。實(shí)驗(yàn)內(nèi)容:1. TIM3 時(shí)鐘使能。2.3.4.5.6.初始化定時(shí)器參數(shù),設(shè)置自動(dòng)重裝值,分頻系數(shù),計(jì)數(shù)方式等。設(shè)置定時(shí)器允許更新中斷。定時(shí)器中斷優(yōu)先級設(shè)置。允許定時(shí)器工作,也就是使能定時(shí)器。編寫中斷服務(wù)函數(shù)。實(shí)驗(yàn)過程:先

27、做一點(diǎn)零碎的工作,去 led.c 中設(shè)置 LED 燈初始化函數(shù),以供正式實(shí)驗(yàn)使用。本實(shí)驗(yàn)中,只要 LED0 和 LED1 就可以,LED0 用來表示程序正在運(yùn)行,LED1 則用來表示定時(shí)器中斷的操作。void LED_Init(void)GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);/使,PB 端口時(shí)鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GP

28、IO_Mode = GPIO_Mode_Out_PP;/LED0-PA.0 端口配置/推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIOA.8GPIO_SetBits(GPIOA,GPIO_Pin_0);/IO 口速度為 50MHz/ 根 據(jù) 設(shè) 定 參 數(shù) 初 始 化 /PA.8 輸出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;挽輸出GPIO_Init(GPIOA, &GPIO_InitStructure); 5

29、0MHzGPIO_SetBits(GPIOA,GPIO_Pin_1);/LED1-PA.1 端口配置, 推/ 推挽輸出 , IO 口速度為/PD.2 輸出高進(jìn)入 time.c 中,設(shè)置 TIM3 通用定時(shí)器的初始化函數(shù)。首先要使用函數(shù) RCC_APB1PeriphClockCmd 來使能 TIM3,再用 TIM_TimeBaseInit 函數(shù)來設(shè)置五個(gè)主要參數(shù)。在這個(gè)函數(shù)中,參數(shù)的設(shè)置也是通過結(jié)構(gòu)體 TIM_TimeBaseInitTypeDef 來進(jìn)行的。和其他初始化函數(shù)不同的是,時(shí)鐘初始化函數(shù)中,會(huì)有兩個(gè)參數(shù):arr 和 psc。PSC 是用來設(shè)置分頻系數(shù) n 的,該系數(shù)對時(shí)鐘進(jìn)行分頻,也

30、就是系統(tǒng)時(shí)鐘頻率的 n 分之一,然后提供給計(jì)數(shù)器,作為計(jì)數(shù)器的時(shí)鐘。arr 是設(shè)置自動(dòng)重載計(jì)數(shù)周期值,從 0 計(jì)數(shù)到 ARR 的值,就觸發(fā)一次中斷,然后再重新開始計(jì)數(shù)。該段代碼如下:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /時(shí)鐘使能 TIM_TimeBaseStructure.TIM_Period = arr; /設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值計(jì)數(shù)到 5000 為 500msTIM_TimeBaseStructure.TIM_Prescaler =psc; /設(shè)置用來作為 TIMx 時(shí)鐘頻率除數(shù)的預(yù)分頻值

31、10Khz 的計(jì)數(shù)頻率TIM_TimeBaseStructure.TIM_ClockDivi= 0; /設(shè)置時(shí)鐘分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/TIM 向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /根據(jù) TIM_TimeBaseInitStruct 中指定的參數(shù)初始化 TIMx 的時(shí)間基數(shù)使用定時(shí)器中斷,就必須和使用其他中斷一樣,打開中斷并設(shè)置優(yōu)先級。這段代碼非常類似,只不過這里改成了時(shí)鐘中斷。TIM_ITCo

32、nfig(/使能或者失能指定的 TIM 中斷TIM3, /TIM2TIM_IT_Update , ENABLE/使能);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;/TIM3 中斷NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/先占優(yōu)先級 0 級NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/從優(yōu)先級 3 級 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQ 通道被使能

33、 NVIC_Init(&NVIC_InitStructure);/根據(jù)NVIC_InitStruct 中指定的參數(shù)初始化外設(shè)NVIC 寄存器剛才的步驟中是設(shè)置好了 TIM3,最后還要用 TIM_Cmd(TIM3, ENABLE)函數(shù)來打開TIM3,這點(diǎn)一定不能忘記,很多人設(shè)置結(jié)束后忘記打開,導(dǎo)致時(shí)鐘中斷完全不能用,檢查半天才發(fā)現(xiàn)這里有一個(gè) BUG。到這里才算是完成 TIM3 的初始化函數(shù)。下面來編寫 TIM3 中斷服務(wù)程序。該服務(wù)程序的很簡單:使用 TIM_GetITSus 函數(shù)檢查時(shí)鐘中斷是否發(fā)生,如果發(fā)生了,就操作一下 LED1,然后清除中斷標(biāo)志位。void TIM3_IRQHandler

34、(void)/TIM3 中斷if (TIM_GetITSus(TIM3, TIM_IT_Update) != RESET) /檢查指定的 TIM 中斷發(fā)生與否:TIM 中斷源TIM_ClearITPendingBit(TIM3, TIM_IT_Update);/清除 TIMx 的中斷待處理位:TIM 中斷源LED1=!LED1;main 函數(shù)中,需要設(shè)置一下中斷分組,并且調(diào)用 LED 和定時(shí)器的初始化函數(shù)。接下來的事情就是 while(1)循環(huán),讓程序運(yùn)行下去,這個(gè)可以用 LED0 的閃爍來表示。測試:后,可以看到 LED1 以較快的速度不停閃爍,表示程序一直在循環(huán)運(yùn)行中。LED2 則以較慢的

35、速度變化狀態(tài)(從亮變滅,或從滅變亮),每次變化表示時(shí)鐘中斷被觸發(fā)了一次。LED1 快速閃爍LED2 閃爍較慢科技大學(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)驗(yàn)名稱:發(fā)生器的使用實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?.2.3.理解學(xué)會(huì)設(shè)置使用(脈沖寬度調(diào)制)的基本原理。輸出,了解參數(shù)影響。輸出三角波。實(shí)驗(yàn)材料:硬件準(zhǔn)備:STM32 最小系統(tǒng)板一塊。LED 燈 1 個(gè),杜邦線 2 根。SWD 仿真器一個(gè)(或 CH340 串口線一根)。準(zhǔn)備:1. MDK5。實(shí)驗(yàn)內(nèi)容:1.2.3.4.5.6.開啟 TIM1 時(shí)鐘,配置 PA8 為復(fù)用輸出。設(shè)置 TI

36、M1 的 ARR 和PSC。設(shè)置 TIM1_CH1 的使能 TIM1。設(shè)置 MOE 輸出,使能模式及通道方向, 使能 TIM1 的 CH1 輸出。輸出。修改 TIM1_CCR1 來控制占空比。實(shí)驗(yàn)過程:先開啟 TIM1 的時(shí)鐘,這點(diǎn)相信大家看了這么多代碼,應(yīng)該明白了。這里還要配置 PA8為復(fù)用輸出,這是因?yàn)?TIM1_CH1 通道將使用 PA8 的復(fù)用功能作為輸出。因?yàn)?PA8 是復(fù)用輸出,所以也需要使8 的時(shí)鐘,接下來 PA8 還需要普通的設(shè)置一下。RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);/RCC_APB2PeriphClock

37、Cmd(RCC_APB2Periph_GPIOA , ENABLE);/使能 GPIO 外設(shè)時(shí)鐘使能/設(shè)置該引腳為復(fù)用輸出功能,輸出 TIM1 CH1 的GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; /TIM_CH1脈沖波形GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/復(fù)用推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);本身就是定時(shí)器產(chǎn)生的,本次實(shí)驗(yàn)選用 TM1 定時(shí)器,這

38、是一個(gè)高級定時(shí)器,設(shè)置方法和之前的 TM3 很相似,只不過必要的參數(shù)多了 1 個(gè)。同樣的,在這里來設(shè)置。用結(jié)構(gòu)體TIM_TimeBaseStructure.TIM_Period = arr; /設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值80KTIM_TimeBaseStructure.TIM_Prescaler =psc; /設(shè)置用來作為 TIMx 時(shí)鐘頻率除數(shù)的預(yù)分頻值不分頻TIM_TimeBaseStructure.TIM_ClockDivi= 0; /設(shè)置時(shí)鐘分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TI

39、M_CounterMode_Up;/TIM 向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); /根據(jù) TIM_TimeBaseInitStruct 中指定的參數(shù)初始化 TIMx 的時(shí)間基數(shù)除了定時(shí)器實(shí)驗(yàn)里介紹的 arr 和 psc 兩個(gè)寄存器(平時(shí)也是變量名)外,在這里要認(rèn)識(shí)一下 CCR1 捕獲/比較寄存器。根據(jù)設(shè)置的極性不同,它可以一個(gè)變量,控制計(jì)數(shù)器中的數(shù)大于或小于這個(gè)變量使,輸出脈沖,由此控制占空比。模式(默認(rèn)是凍結(jié)的),因?yàn)榻酉聛?,平亮,而要設(shè)置 TIM1_CH1 為的 LED 都是低電希望當(dāng) CCR1 的值小的時(shí)候,LED 就

40、暗,CCR1 值大的時(shí)候,LED 就亮,所以要通過配置 TIM1_CCMR1 的相關(guān)位來控制 TIM1_CH1 的模式。在庫函數(shù)中,通道設(shè)置是通過函數(shù) TIM_OC1Init()TIM_OC4Init()來設(shè)置的,不同的通道的設(shè)置函數(shù)不一樣,這里使用的是通道 1,所以使用的函數(shù)是 TIM_OC1Init()。TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_2; /選擇定時(shí)器模式:TIM 脈沖寬度調(diào)制模式 2TIM_OCInitStructure.TIM_OutputSe = TIM_OutputSe_Enable; /比較輸出使能 TIM_OCInitS

41、tructure.TIM_Pulse = 0; /設(shè)置待裝入捕獲比較寄存器的脈沖值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /輸出極性:TIM 輸出比較極性高TIM_OC1Init(TIM1, &TIM_OCInitStructure);/根據(jù)TIM_OCInitStruct 中指定的參數(shù)初始化外設(shè) TIMx回到主函數(shù)中,設(shè)置一個(gè)變量 led0val 來控制占空比。這里要認(rèn)識(shí)一下pare1()庫函數(shù),它有兩個(gè)參數(shù),第一個(gè)參數(shù)是定時(shí)器,第二個(gè)參數(shù)是一個(gè)小于arr 的整數(shù),它與 arr 的比值就是占空比。main(void

42、)u16 led0val=0; u8 dir=1;delay_init();TIM1_while(1)/延時(shí)函數(shù)初始化_Init(899,0);/不分頻。頻率=72000/(899+1)=80Khzdelay_us(500);if(dir)led0val+;else led0if(led0val-;val300)dir=0;if(led0val=0)dir=1;pare1(TIM1,led0val);測試:LED 以正極接 3.3V,負(fù)極接 STM32 的 PA8,可以觀察到 LED 亮度循環(huán)變化的呼吸燈現(xiàn)象。直接將 PA8 和 PA0-PA7 中任何接起來即可。LED4 亮度循環(huán)變化科技大學(xué)

43、實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)驗(yàn)名稱: 板上串口 DMA 發(fā)送實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模簠^(qū)分 DMA 和普通傳送方式的區(qū)別。學(xué)會(huì)使用 DMA 進(jìn)行數(shù)據(jù)傳輸,體會(huì)使用 DMA 的優(yōu)點(diǎn)。實(shí)驗(yàn)材料:硬件準(zhǔn)備:STM32 最小系統(tǒng)板一塊。CH340 串口線一根。準(zhǔn)備:MDK5。串接口調(diào)試助手。實(shí)驗(yàn)內(nèi)容:1.2.3.4.5.使能 DMA 時(shí)鐘。初始化 DMA 通道 4 參數(shù)。使能串口 DMA 發(fā)送。使能 DMA1 通道 4,啟動(dòng)傳輸。查詢 DMA 傳輸狀態(tài)。實(shí)驗(yàn)過程:因?yàn)樯婕皶r(shí)序問題,肯定是要對 DMA 進(jìn)行時(shí)鐘使能的。調(diào)用函數(shù)初始

44、化 DMA 的時(shí)候,需要用到三個(gè)參數(shù):DMA 通道及其外設(shè)為串口、器,數(shù)據(jù)長度。接下來,需要用結(jié)構(gòu)體 DMA_InitStructure 來配置 DMA 。該結(jié)構(gòu)體的變量較多, 比較重要的有:DMA_PeripheralBaseAddr 用來設(shè)置 DMA 傳輸?shù)耐庠O(shè)址;數(shù) DMA_MemoryBaseAddr為內(nèi)存址,也就是存放 DMA 傳輸數(shù)據(jù)的內(nèi)存地址;DMA_DIR 設(shè)置數(shù)據(jù)傳輸方向,決定是從外設(shè)數(shù)據(jù)到內(nèi)存還送從內(nèi)存數(shù)據(jù)發(fā)送到外設(shè),也就是外設(shè)是源地還是目的地;DMA_Priority 是中斷的優(yōu)先級。其他的都是一些關(guān)于數(shù)據(jù)長度等具體方面的操作,有興趣可以探討一下。RCC_AHBPerip

45、hClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /使能 DMA 傳輸DMA_DeInit(DMA_CHx);dtr;/將 DMA 的通道 1 寄存器重設(shè)為缺省值DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;/DMA 外設(shè) ADC址DMA_InitStructure.DMA_MemoryBaseAddr = cmar;/DMA 內(nèi)存址DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;/數(shù)據(jù)傳輸方向,從內(nèi)存到外設(shè)DMA_InitStructure.DMA_BufferS

46、ize = cndtr;/DMA 通道的 DMA 緩存的大小發(fā)送DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;/外設(shè)地址寄存器不變DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;/內(nèi)存地址寄存器遞增 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;/數(shù)據(jù)寬度為 8 位DMA_InitStructure.DMA_MemoryDataSize = DMA_Memo

47、ryDataSize_Byte; /數(shù)據(jù)寬度為 8 位 DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;/工作在正常緩存模式 DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; /DMA 通道 x 擁有中優(yōu)先級 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;/DMA 通道 x 沒有設(shè)置為內(nèi)存到內(nèi)存?zhèn)鬏擠MA_Init(DMA_CHx, &DMA_InitStructure);/根據(jù) DMA_InitStruct 中指定的參數(shù)初始化DMA 的通道 USART

48、1_Tx_DMA_Channel 所標(biāo)識(shí)的寄存器在主函數(shù)中,要使能串口的 DMA 功能:USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);使能串口 DMA 后,行的。在使用 DMA 的時(shí)候,要使能通道,這個(gè)是在 DMA 的調(diào)用函數(shù)中進(jìn)DMA_Cmd(DMA_CHx, ENABLE);/使能 USART1 TX DMA1 所指示的通道m(xù)ain.c 中設(shè)置一個(gè)字符串,將其存入 DMA 的發(fā)送區(qū)中。DMA 的發(fā)送址以及長度在第一步中都有設(shè)置,現(xiàn)在可以直接用了。const u8 TEXT_TO_SEND=科技大學(xué) DMA 串口實(shí)驗(yàn);for(i=0;iTEXT_LE

49、NTH;i+)/填充 ASCII 字符集數(shù)據(jù)SendBuffi=TEXT_TO_SENDi;/TEXT_TO_SEND 語句SendBuffTEXT_LENTH=0 x0d; /換行符占 2 個(gè)字符SendBuffTEXT_LENTH+1=0 x0a;在主函數(shù)中循環(huán)輸出。注意在實(shí)際過程中,發(fā)出傳輸命令后可以去做一些別的事,結(jié)束之后再回來檢查有沒有傳輸完成。在本實(shí)驗(yàn)中就不過多演示。while(1)USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);MYDMA_Enable(DMA1_Channel4);/開始一次 DMA 傳輸!/等待 DMA 傳輸完成,此時(shí)來

50、做另外一些事,點(diǎn)燈/實(shí)際應(yīng)用中,傳輸數(shù)據(jù)期間,可以執(zhí)行另外的任務(wù)while(1)if(DMA_GetFlagSus(DMA1_FLAG_TC4)!=RESET)/等待通道 4 傳輸完成DMA_ClearFlag(DMA1_FLAG_TC4);/清除通道 4 傳輸完成標(biāo)志break;delay_ms(100);CH340 線連接電腦和單片機(jī),打開串口調(diào)試助手,注意設(shè)置波特率為 9600。測試:CH340 接線參考串口通信實(shí)驗(yàn),打開調(diào)試助手后,每秒會(huì)自動(dòng)接收一條信息,完全一樣??萍即髮W(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)

51、驗(yàn)名稱: ADC 模數(shù)轉(zhuǎn)換實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?.2.3.了解 ADC 工作原理。掌握 ADC 的配置方法。結(jié)合串口,了解 ADC 常用的使用方法。實(shí)驗(yàn)材料:硬件準(zhǔn)備:STM32 最小系統(tǒng)板一塊。CH340 串口線一根。單獨(dú)的杜邦線一根(接電壓信號(hào)用)。準(zhǔn)備:MDK5。串接口調(diào)試助手。實(shí)驗(yàn)內(nèi)容:1.2.3.4.5.開啟 PA 口和 ADC1 時(shí)鐘,設(shè)置 PA1 為模擬輸入。復(fù)位 ADC1,同時(shí)設(shè)置 ADC1 分頻因子。初始化 ADC1 參數(shù),設(shè)置 ADC1 的工作模式以及規(guī)則序列的相關(guān)信息。使能 ADC 并校準(zhǔn)。ADC 值。實(shí)驗(yàn)過程:ADC 通道 1 在 PA1 上,所以,先要使能 PORTA 的時(shí)

52、鐘,然后設(shè)置 PA1 為模擬輸入。使能 GPIOA 和 ADC 時(shí)鐘用 RCC_APB2PeriphClockCmd 函數(shù),設(shè)置 PA1 的輸入方式,使用GPIO_Init 函數(shù)即可。開啟 ADC1 時(shí)鐘之后,要復(fù)位 ADC1,將 ADC1 的全部寄存器重設(shè)為缺省值之后就可以通過 RCC_CFGR 設(shè)置 ADC1 的分頻因子。分頻因子要確保 ADC1 的時(shí)鐘(ADCCLK)不要超過 14Mhz,否則容易失靈。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE );/使能 ADC1 通道時(shí)鐘RCC_A

53、DCCLKConfig(RCC_PCLK2_Div6);過 14M/PA1 作為模擬通道輸入引腳/設(shè)置 ADC 分頻因子 6 72M/6=12,ADC 最大時(shí)間GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure);/模擬輸入引腳下面開始用結(jié)構(gòu)體 ADC_InitStructure 進(jìn)行 ADC1 的模式配置,設(shè)置單次轉(zhuǎn)換模式、觸發(fā)方式選擇、數(shù)據(jù)對齊方式等都在這一步實(shí)現(xiàn)。同時(shí)還要設(shè)置 ADC1 規(guī)則序列

54、的相關(guān)信息,這里只有一個(gè)通道,并且是單次轉(zhuǎn)換的,所以設(shè)置規(guī)則序列中通道數(shù)為 1。ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;/ADC 工作模式:ADC1 和 ADC2工作在獨(dú)立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;/模數(shù)轉(zhuǎn)換工作在單通道模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;/模數(shù)轉(zhuǎn)換工作在單次轉(zhuǎn)換模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigC

55、onv_None; / 轉(zhuǎn)換由不是外部觸發(fā)啟動(dòng)ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; /ADC 數(shù)據(jù)右對齊而ADC_InitStructure.ADC_NbrOfChannel = 1;/順序進(jìn)行規(guī)則轉(zhuǎn)換的 ADC 通道的數(shù)目ADC_Init(ADC1, &ADC_InitStructure); /根據(jù) ADC_InitStruct 中指定的參數(shù)初始化外設(shè) ADCx的寄存器使能并校準(zhǔn) ADC1 是非常重要的,不像其他固件,ADC 的使能速度較慢,并且不校準(zhǔn)的話會(huì)使結(jié)果有很大偏差。在這里需要一段確定使能和校準(zhǔn)完畢的代碼。ADC

56、_Cmd(ADC1, ENABLE); /使能指定的 ADC1ADC_ResetCalibration(ADC1);/使能復(fù)位校準(zhǔn)while(ADC_GetResetCalibrationSus(ADC1); /等待復(fù)位校準(zhǔn)結(jié)束ADC_StartCalibration(ADC1);/開啟 AD 校準(zhǔn)while(ADC_GetCalibrationSus(ADC1);/等待校準(zhǔn)結(jié)束ADC 的值了。設(shè)置結(jié)束后,就可以用庫函數(shù)來要做的就是設(shè)置規(guī)則序列 1里面的通道,采樣順序,以及通道的采樣周期,然后啟動(dòng) ADC 轉(zhuǎn)換。在轉(zhuǎn)換結(jié)束后,ADC 轉(zhuǎn)換結(jié)果值。ADC_RegularChannelConfig

57、() 函 數(shù) 可 以 設(shè) 置 規(guī) 則 序 列 通 道 以 及 采 樣 周 期 , 再 用ADC_SoftwareStartConvCmd() 函 數(shù) 來 從開 啟ADC , 之 后 可 以 用ADC_GetConver更加準(zhǔn)確。u16 Get_Adc(u8 ch)Value()函數(shù)獲取轉(zhuǎn)換結(jié)果。這里采用了多次采樣取平均值,使結(jié)果/設(shè)置指定 ADC 的規(guī)則組通道,一個(gè)序列,采樣時(shí)間ADC_RegularChannelConfig(ADC1, ch, 1, ADC_S通道,采樣時(shí)間為 239.5 周期ADC_SoftwareStartConvCmd(ADC1, ENABLE);功能leTime_2

58、39Cycles5 ); /ADC1,ADC/使能指定的ADC1 的轉(zhuǎn)換啟動(dòng)while(!ADC_GetFlagSus(ADC1, ADC_FLAG_EOC );/等待轉(zhuǎn)換結(jié)束return ADC_GetConverValue(ADC1); /返回最近一次 ADC1 規(guī)則組的轉(zhuǎn)換結(jié)果u16 Get_Adc_Average(u8 ch,u8 times)u32 temp_val=0;u8 t;for(t=0;ttimes;t+)temp_val+=Get_Adc(ch); delay_ms(5);return temp_val/times;這次照例要用串口發(fā)送結(jié)果給電腦,不過不用傳統(tǒng)方法和 DM

59、A,這里可以直接用 PRF 在串口助手打印,和普通的 C 語言一樣。main(void)u16 adcx;float temp; delay_init(); uart_init(9600); Adc_Init(); while(1)/延時(shí)函數(shù)初始化/串口初始化為 9600/ADC 初始化adcx=Get_Adc_Average(ADC_Channel_1,10);prf(讀到的 ADC 值是%drn,adcx); temp=(float)adcx*(3.3/4096); adcx=temp;prf(測得的電壓為%f 伏rnrn,temp); delay_ms(500);測試:CH340 接線參

60、考串口通信實(shí)驗(yàn),PA1 連接 GND 端或 3.3V時(shí)間會(huì)收到單片機(jī)的測試值。,打開調(diào)試助手后,隔一段科技大學(xué)實(shí)驗(yàn)學(xué)院:計(jì)通學(xué)院專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián) 1601:鴻學(xué)號(hào):41601629實(shí)驗(yàn)日期:2018年7 月18日實(shí)驗(yàn)名稱: I/O 口組操作(掃描數(shù)碼管)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模豪斫鈹?shù)碼管顯示字形的原理。理解數(shù)碼管位選掃描的原理。實(shí)驗(yàn)材料:硬件準(zhǔn)備:STM32 最小系統(tǒng)板一塊。數(shù)碼管模塊。SWD 仿真器一個(gè)(或 CH340 串口線一根)。準(zhǔn)備:1. MDK5。實(shí)驗(yàn)內(nèi)容:1.2.3.4.關(guān)閉 SWD 調(diào)試功能。初始化 I/O 口,并進(jìn)行時(shí)鐘使能。設(shè)置數(shù)碼管位選字形和段碼字形。設(shè)置主函數(shù),位選輸出相

溫馨提示

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

評論

0/150

提交評論