使用外擴(kuò)教程智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考核裝備_第1頁
使用外擴(kuò)教程智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考核裝備_第2頁
使用外擴(kuò)教程智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考核裝備_第3頁
使用外擴(kuò)教程智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考核裝備_第4頁
使用外擴(kuò)教程智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考核裝備_第5頁
已閱讀5頁,還剩636頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

YLYL-796智能建筑工程物聯(lián)網(wǎng)技術(shù)實訓(xùn)考浙江YL教育裝第一章產(chǎn)品簡 第二章YLSTM32F107VCT開發(fā)板硬件簡 板載AD實 實時時鐘 第六章ARM應(yīng)用綜合實 第七章物聯(lián)網(wǎng)安卓應(yīng)用綜合實 第八章物聯(lián)網(wǎng)安卓開發(fā) 第一章產(chǎn)品簡介浙江YL教育裝備專利產(chǎn) 杯”大學(xué)生智能建筑工程實踐技能競賽指定設(shè) 參考,以實際配置為準(zhǔn)系統(tǒng)器件主要包括各種電源、網(wǎng)絡(luò)、、顯示、輸入及輸出裝置等;輔材主要軟件則由各種系統(tǒng)軟件與通用軟件等組成使用本設(shè)備能夠使學(xué)生在模擬建筑平臺的各個自定義區(qū)域中對“ 周邊安防系統(tǒng)“DDC智能照明系統(tǒng)“物聯(lián)網(wǎng)智能家居系統(tǒng)”及“SASBAS及物聯(lián)網(wǎng)集成系統(tǒng)”進(jìn)行設(shè)計、安裝、接線、編程、組態(tài)、集成、調(diào)試、運(yùn)行、診斷作而各在的并熟其技點(diǎn)夠訓(xùn)練與檢驗學(xué)生的團(tuán)隊協(xié)作、計劃組織、交流溝通、工程規(guī)劃及實施等能力,富職素,高合是適項考、師學(xué)學(xué)實實等方面求建電與能系實訓(xùn)核備。YLSTM32F107VCT整體功能簡物聯(lián)網(wǎng)智能建筑主控板采用意法半導(dǎo)體的物聯(lián)型控制stm32F107VCT,其實物圖如圖2LCD12864圖3TFT觸摸屏液晶擴(kuò)展模一、YL主板功能簡STM32F107VCT6,ARMCortex-M3內(nèi)核,ARMCortex-M3內(nèi)核,主頻72Mhz字節(jié)的FLASH和64K字節(jié)的1個10M/100M以太網(wǎng)接口,標(biāo)準(zhǔn)RJ45接1個USB2.0OTG全速接口,可以作為USBSLAVE,也可以作為USB1個標(biāo)準(zhǔn)的2.8/3.2寸TFTLCD接口,帶觸摸功能,分辨率320X240,26萬色(支持的TFT驅(qū)動ILI9341)1個SD卡接2個CAN總線接1個RS-485接2個RS-232C串口(使用DB9,線序與PC機(jī)相同1個IIC接口的EEPROM,24C02,容量2K比14個功能按鈕,其中包括WAKEUP喚醒功能和TEMPER功1個電源指示燈(綠色4個用戶狀態(tài)指示燈21個標(biāo)準(zhǔn)的JTAG/SWD仿真調(diào)試接1路電位器可調(diào)電阻模擬輸入,可以數(shù)轉(zhuǎn)換實2個DAC數(shù)模轉(zhuǎn)換接口連接到接線2個ADC模數(shù)轉(zhuǎn)換接口連接到接線1個DC5V電源接1個電源開關(guān),板的電源,可以選擇從USB取電或DC5V電源接口取支持從JLINK取5V電源或3.3V電主板各模塊簡YL主控板的處理器是STM32F107VCT6,該處理器基于ARMV7架構(gòu)的Cortex-M3內(nèi)核,主頻72Mhz,內(nèi)部含有256K字節(jié)的FLASH和64K字節(jié)的SRAM,LQFP100封裝。STM32主要產(chǎn)品系列家譜如圖4所示,STM32F107屬于互聯(lián)型系列(STM32ConnectivityLine),資源非常豐富,比其他系列多了USB2.0OTG全速接口和以太網(wǎng)IEEE1588接口。10M/100M

YL主控板采用高性價比的DM9161A作為10M/100M以太網(wǎng)PHY,采用RMII接口與處理器STM32F107內(nèi)部的IEEE1588MAC連接,標(biāo)準(zhǔn)RJ45接口,支持平行交叉網(wǎng)線自適USB2.0OTGYL主控板含有一個USB2.0OTG全速接口,既可以作為OTG與其它OTG設(shè)備相連協(xié)商主從角色;也可以固定作為USBSLAVE從設(shè)備與PC等主設(shè)備相連實現(xiàn)USB,USB鼠標(biāo),USB固件升級等功能;還可以固定作為USBHOST連接U盤,USB鍵鼠等從設(shè)備。22320 X 40的顯示分辨率64萬色可以真的顯示、文字和菜單等,配合觸摸功能實現(xiàn)靈活的控制,我們提供已經(jīng)調(diào)試成功的LCD液晶屏和觸摸屏的示例代碼。本開發(fā)板具有市面罕見的完美支持ILI9341液晶驅(qū)動功能SD有了它,我們的開發(fā)板就相當(dāng)于擁有了一個大容量的外部器,不單可以用來提供數(shù)據(jù),也可以用來數(shù)據(jù),使得我們的板子可以完成的功能。CAN總線YL主控板提供兩組CAN總線CAN是控制器局域網(wǎng)絡(luò)(ControllerAreaNetwork,的簡稱,是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。其所具主控板提供的兩組CAN總線接口可以很方便的與CAN設(shè)備CAN總線控制實驗S-485接口YL主控板提供一組485RS-485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。加上總線收發(fā)器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信號能在千米以外得到恢復(fù)。RS-485采用半雙工工作方式,任何時候只能有一點(diǎn)處于發(fā)送狀態(tài),因此,發(fā)送電路須由使能信號加以控制。RS-485用于多點(diǎn)互連時非常方便,可以省掉許多信號線,其最大傳輸距離約為1219米,最大傳輸速率為10Mbps。-YL主控板提供兩個串口。由STM32F107VCT6的USART1和USART2 IICIICEEPROM常用于掉電數(shù)據(jù)保存,和配置數(shù)據(jù)等場合,YL主控板板載有一顆24C02,用于重要數(shù)據(jù),也可以用來做IIC實驗及實現(xiàn)其他應(yīng)用。復(fù)位該按鈕是YL主控板整板硬件復(fù)位按鈕,當(dāng)按鍵按下時,STM32處理器,液晶,以太網(wǎng),以及音頻 都將復(fù)位。YL主控板除了前面提到的復(fù)位按鍵這一特殊功能按鍵外,還提供四個按鍵,其中兩個按鍵分別為WAKEUP喚醒按鍵,以及TAMPER按鍵,另兩個為用戶可自定義功能的通用按鍵USER1和UE2。(說明:這四個按鍵,可依據(jù)實際產(chǎn)品,定義成產(chǎn)品的功能按鍵,包括WAKEUP按鍵與TAMPER按鍵)YL主控板提供了1個電源指示燈和4路通用LED指示燈。電源指示燈指示3.3V電源是否正常。4路通用ED指示燈可以用于指示STM32開發(fā)板的狀態(tài)。功User(默認(rèn)模式RTC實時時YL主控板內(nèi)置RTC實時時鐘,我們提供支持年月日時YL主控板提供了一路可調(diào)電阻作為模擬信號輸入,通過這一路可調(diào)電阻可以學(xué)習(xí)處理器的ADTAW仿真調(diào)試YL主控板提供標(biāo)準(zhǔn)的20針JTAG接口,可以直接和ULINK或者JINK等主流仿真器連接,同時支持SWD(因為STM32支持SWD)??梢杂糜谡{(diào)試STM32,更方便的開發(fā)軟件。DC5V電源接YL主控板提供5V直流電源輸入接口,DC電源座符合常見電源適配器接口標(biāo)準(zhǔn),DC電源座的里面為電源正極,外面為電源負(fù)極。YL主控板支持4種供電方式:1、DC5V提供5V;2、USB提供5V;3、JLINK提供5V;4JLINK提供3.3VYL主控板板上使用3.3V電源,所以我們需要將USB的5V或DC電源座的5V或者Jlink提供的5V電壓轉(zhuǎn)換為3.3V。YL主控板將STM32處理器部分具有特殊功能的管腳連接到預(yù)留接線端子,提供一些可擴(kuò)展的功能。預(yù)留接口的管腳定義如下:1112223344556Y32f10的E功能復(fù)用的跳線設(shè) CAN總線的跳線與ICEEPROM選擇跳將P4跳帽連接上時I2CEEPROM被選擇連接,否則CAN總RS232串口1與USB選擇跳RS-232串口與USBOTG接口,跳線定義串口11-1-USBOTG接2-2-串口1RS232RS232串口1與USB選擇跳串口2可通過跳串口21-串口2RS4852-串口2RS232RTC實時時鐘跳TM32的BT采用CR1220紐扣電池和VCC3.3混合供電的方式,在有外部電源(VCC3.3)的時候,BT1不給處理器的VBTBT1給BTBTTCAN總線120Ω由于CAN總線在運(yùn)行時需在總線兩端匹配120Ω的電阻,因而在本物聯(lián)網(wǎng)智能建筑設(shè)備實訓(xùn)系統(tǒng)中,需用跳線帽將A總線連接的第一塊主板(燃?xì)怆娫辞度氚?和AN總線連接的最好()的2短接。觸摸屏和以太網(wǎng)接口的跳線2-3第三章相關(guān)驅(qū)動安裝CANCANUSB 系統(tǒng)提示找到新硬件,選擇“是,僅這一次(Y)”選項,并點(diǎn)擊“下一步”在如下畫面中,選擇“從列表或指定位置安裝(高級(S)”,并點(diǎn)擊“下一步”最后點(diǎn)擊“完成”(”((話框中選擇“硬件”(4)而后選擇“設(shè)備管理器”(5)最后在設(shè)備處理器中查看是否完成驅(qū)Z-TEKUSBGSMZ-TEK串口線插入USB口Z-TEK產(chǎn)品驅(qū)動支持的windows系統(tǒng)包含如下WindowsWindows8WindowsWindows7WindowsWindowsWindowsXPWindows安裝方式一:一鍵式驅(qū)動安裝步驟 \Windows全系統(tǒng)驅(qū)動 ,點(diǎn)擊點(diǎn)擊“下一步點(diǎn)擊“完成,安裝方式二:inf驅(qū)動插入產(chǎn)品 端,系統(tǒng)會提示要安裝驅(qū)動,在“我的電腦”右鍵菜單選擇“管理進(jìn)入管理界面,打黃色感嘆號的即為USB在黃色設(shè)備上點(diǎn)擊右鍵“更新驅(qū)動程序,選擇“瀏覽計算機(jī)。手動查找并安裝選擇路徑至…\驅(qū)動程序\Windows全系統(tǒng)驅(qū)動\inf系統(tǒng)提示您,再安裝一次驅(qū)動,請重復(fù)步驟第四章ARM關(guān)開MDK412備注:該軟件 :“YL-796用戶光盤\相關(guān)軟件\keilMDK安裝軟件MDk412.exe開始安裝在下圖中點(diǎn)擊而后(1)點(diǎn)擊“Browse…”選擇安 ,(2)點(diǎn)擊確定,(3)并點(diǎn)擊 按鈕”繼續(xù)安點(diǎn)擊“Next安裝完成后,在桌面上雙擊 uVision4”進(jìn)入主程序選擇File菜單欄,點(diǎn)擊“LicenseManagement”進(jìn)行你的CID雙擊安裝源文 中的KEIL_Lic.exe文在跳出的如下界面中,的CID碼進(jìn)去,并選擇Target為“ARM”,而后點(diǎn)擊碼會自動生成得到的序列號,放到如圖所示位置,并點(diǎn)擊 LIC”按完成安裝JLink驅(qū)動程序的安裝備注:該軟件 :“YL-796用戶光盤\相關(guān)驅(qū)動\JLink驅(qū)動雙擊“Setup_JLinkARM_V412.exe”接著跳轉(zhuǎn)到如下畫面,點(diǎn)擊“Yes”點(diǎn)擊“Next”點(diǎn)擊“Next”而后,點(diǎn)擊“Next”而后,點(diǎn)擊“Next”10.最后,點(diǎn)擊點(diǎn)擊“Finish”ARMLED作為開發(fā)板硬件經(jīng)典入門實驗,非流水燈莫屬(流水燈也叫跑馬燈。YLSTM32F107物聯(lián)網(wǎng)開發(fā)板板載了4個LED指示燈,LED1,LED2,LED3和LED4。本實驗將通過教你如該實驗的關(guān)鍵在于如何控制STM32的IO口輸出高低電平。通過這一節(jié)的學(xué)習(xí),您將初步掌握STM32基本IO口的使用,邁出STM32學(xué)習(xí)的第一步。前面已經(jīng)跑馬燈的關(guān)鍵實際上就是如何控制STM32處理器的GPIO接口作為輸出STM32GPIO的原理和控制STM32IO8模擬輸入輸入浮空輸入下拉輸入上拉開漏輸出推挽輸出typedef{GPIO_Mode_AIN=0x0,GPIO_Mode_IPD=0x28,GPIO_Mode_IPU=0x48,GPIO_Mode_Out_PP=0x10,GPIO_Mode_AF_OD=0x1C,GPIO_Mode_AF_PP=0x18在我們使用一個GPIO之前,我們一般需要對GPIO管腳的時鐘,和GPIO管腳模式以及STM32的GPIO端口在作為輸出時,可以軟件配置端口最大支持的時鐘速率,有以下幾種輸出模式,最大時鐘速率輸出模式,最大時鐘速率2MHz50MHztypedefenum{STM32處理器的功耗可以依據(jù)實際的需求,選擇合適的時鐘速率,GPIO口支在對STM32的GPIO管腳有了一定的了解后,我們看一個完整的GPIO端口子為程序便于大家修改和移植,此處使用宏來定義指示燈的管腳等:#define #defineGPIO_LED_PORT #define #define #define #define #define 下面的LED_config函數(shù)是初始化YLSTM32F107物聯(lián)網(wǎng)開發(fā)板的4個LEDGPIO端口初始void{GPIO_InitTypeDef/*EnableGPIOB,GPIOCandAFIOclock*/RCC_APB2PeriphClockCmd(RCC_GPIO_LED|RCC_APB2Periph_AFIO,ENABLE);/*LEDspinsconfiguration*/GPIO_InitStructure.GPIO_Pin=GPIO_LED_ALL;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIO_LED_PORT,&GPIO_InitStructure);}YLSTM32F107物聯(lián)網(wǎng)開發(fā)板上總共有4個是用戶LED指示燈,由4個GPIO管腳分別LEDGPIO管腳輸出低電平時,LED指示燈亮。反之,當(dāng)GPIO管腳輸出高電平時,LED指示燈滅。這四個LED指示燈分別由PD2、PD3、PD4和PD7控制。LEDGPIOLEDGPIOGPIO管腳與對應(yīng)的LED燈關(guān)系如下LED指示燈電路如下所示:LEDLEDYLSTM32F107物聯(lián)網(wǎng)開發(fā)板LED流水燈實驗使用宏來定義指示燈的管腳等#defineRCC_GPIO_LED #defineGPIO_LED_PORT #define #define #define #define #define 下面的LED_config函數(shù)是初始化YLSTM32F107物聯(lián)網(wǎng)開發(fā)板的4個LEDGPIO端口初始化的子函數(shù)void{GPIO_InitTypeDef/*EnableGPIOB,GPIOCandAFIOclock*/RCC_APB2PeriphClockCmd(RCC_GPIO_LED|RCC_APB2Periph_AFIO,ENABLE);/*LEDspinsconfiguration*/GPIO_InitStructure.GPIO_Pin=GPIO_LED_ALL;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIO_LED_PORT,&GPIO_InitStructure);}以下為一些底層的函數(shù),Led_Turn_on_all函數(shù)就是點(diǎn)亮所有Led,其中調(diào)用的GPIO_ResetBits就是STM32F10x_StdPeriph_Lib_V3.3.0庫的標(biāo)準(zhǔn)函數(shù),作用是將指定的一個或多個管腳輸出低電平,前面講過只要Led管腳輸出低電平,指示燈就會發(fā)光。void{/*TurnOnAllLEDs*/}Led_Turn_off_all函數(shù)就是熄滅所有Led,其中那個調(diào)用的GPIO_SetBits也是STM32F10x_StdPeriph_Lib_V3.3.0庫的標(biāo)準(zhǔn)函數(shù),作用是將指定的一個或多個管腳輸出高電平,前面講過只要Led管腳高電平,指示燈就會熄滅。void{/*TurnOffAllLEDs*/}Led_Turn_on函數(shù)就是實現(xiàn)根據(jù)傳入的參數(shù)點(diǎn)亮特定的LedLed。voidLed_Turn_on(u8led){/*TurnOffSelectLED*/{casecasecasecase}}Delay_MyARM流水燈使用的延時函數(shù),簡單的For循staticvoidDelay_MyARM(IOuint32_t{for(;nCount!=0;nCount--}有了以上的子函數(shù) 主函數(shù)就會比較簡單int{u8KeyNum= ///*USARTxconfiguredasBaudRate=115200WordLength=8OneStopNoHardwareflowcontroldisabled(RTSandCTSReceiveandtransmitUSART_InitStructure.USART_BaudRate=9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_Mode=USART_Mode_Rx|/*完成串口時鐘配置、GPIO配置、根據(jù)上述參數(shù)初始化并使能串口*/Init(COM1,&USART_InitStructure);//標(biāo)記COM2代表“COM1口”,COM1代表“COM2/*OutputamessageonHyperterminalusingprintffunction*/printf("\n\rUSARTIsNowReady\n\r");printf("|||/_|/_printf("| | | / )|)| |||| printf("| ||\\/|</ ||||\\\\/)| | |)//_||||_| while }MAIN函數(shù)一開始就初始化LEDGPIO,然后“上電或復(fù)位后所有的LED閃爍一下”這樣的目的可以檢測4個指示燈是否可以正常可用。最后進(jìn)入While循環(huán),KeyNum變量每次加一,將KeyNum對4求余數(shù)(也可以說取模)得到的0-3數(shù)字就是點(diǎn)亮對應(yīng)的LED,這LED流水燈實5VJLink 雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)而后對開發(fā)板上電,最后跑馬燈會依次點(diǎn)亮,驗證程序在正常運(yùn)行。(D1->D2->D3-按鍵檢測實YLSTM32F107物聯(lián)網(wǎng)開發(fā)板有的4個按鍵(SW2、SW3、SW4、SW5)制板上的LED1LEDSW5LED2LEDSW4LED3LEDSW3LED4LEDSW2YLSTM32F107物聯(lián)網(wǎng)開發(fā)板四個LED等和四個按鍵的管腳分別如下圖所示LEDLEDLED燈對應(yīng)的STM32GPIOIO8模擬輸入輸入輸入開漏推挽typedef{GPIO_Mode_AIN=0x0,GPIO_Mode_IPD=0x28,GPIO_Mode_IPU=0x48,GPIO_Mode_Out_PP=0x10,GPIO_Mode_AF_OD=0x1C,GPIO_Mode_AF_PP=0x18在我們使用一個GPIO之前,我們一般需要對GPIO管腳的時鐘,和GPIO管腳模式以及STM32的GPIO端口在作為輸出時,可以軟件配置端口最大支持的時鐘速率,有以下幾種10MHz輸出模式,最大時鐘速率2MHz50MHztypedefenum{速率主要針 GPIO作為輸出使用時,作為輸入使用時可以不關(guān)注#defineRCC_GPIO_LED #defineGPIO_LED_PORT #define #define #define #define #define LED_configYLSTM32F1074LEDGPIO端口初void{GPIO_InitTypeDef/*EnableGPIOB,GPIOCandAFIOclock*//*LEDspinsconfiguration*/GPIO_InitStructure.GPIO_Pin=GPIO_LED_ALL;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIO_LED_PORT,&GPIO_InitStructure);}/*KEY按

鍵值/*ValuesmagictotheBoardkeys012345YLSTM32F107GPIO會使相應(yīng)的GPIO口變?yōu)榈碗娖?,因此,我們在硬件上加了上拉電阻,這樣我們配置按鍵使(GPO_ode_IN_FOTING下,也可以使用內(nèi)部的上拉電阻,這時我們需要配置按鍵使用的GPIO為輸入上拉模式(GPIO_Mode_IPU。為了不失一般性在這里我們配置按鍵使用的GPIO為輸入上拉模式。沒有收到有效信號,保持這些GPIO口為高電平。Function : :ConfigurestheExtension : : :voidGPIO_KEY_Config(void){GPIO_InitTypeDef/*ConfigureKEY1Button*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin=GPIO_KEY1;/*ConfigureKEY2Button*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin=GPIO_KEY2;/*ConfigureKEY3Button*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin=GPIO_KEY3;/*ConfigureKEY4Button*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin=GPIO_KEY4;}按鍵檢測函數(shù),當(dāng)有按鍵按下時,按鍵檢測函數(shù)返回對應(yīng)的鍵值。Function : :Readskeyfrom : : :ReturnKEY1,KEY2,KEY3,KEY4oru8ReadKeyDown(void){/*1keyispressed*/{return}/*2keyispressed*/{return}/*3keyispressed*/{return}/*4keyispressed*/{return}/*Nokeyispressed*/{return}}LEDLED的控制和int{u8KeyNum=/*LEDGPIO*//*LED閃爍幾次 /*KEYGPIO*//*Mainloop*/while(1){/*判斷是否與按鍵按下*//*LED燈,沒有按鍵按下點(diǎn)亮全部*/}5VJLink 在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)按下復(fù)位鍵的時候,4個LED燈起先閃爍3次,然后全部亮起。當(dāng)按住SW2鍵不放,D4亮起,其余熄滅。當(dāng)按住SW3鍵不放,D3亮起,其余熄滅。當(dāng)按住SW4鍵不放,D2亮起,其余熄滅。當(dāng)按住SW5鍵不放,D1亮起,其余熄滅。如下圖所示沒有按住按鍵時,四個LED全亮,如SW2SW3SW4SW5LCD12864液晶屏顯示實LCD12864介庫的點(diǎn)陣圖形液晶顯示模塊;屏幕分辨率為128×64內(nèi)置有819216*16點(diǎn)漢字,和12816*8ASCII文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣的漢字.也可以顯示出自定義的圖形.2、顯示分辨率:128×64點(diǎn)3、內(nèi)置漢字字庫,提供8192個16×164、內(nèi)置12816×8點(diǎn)陣字5、2MHZ時鐘頻6、顯示方式:STN、7、驅(qū)動方式2DY8、視角方向:69、背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—10、通訊11、內(nèi)置DC-DC轉(zhuǎn)換電12、無需片選信號,簡化軟件設(shè)13、工作溫度:0℃-+55℃,溫度:-20℃-12864表5.3.112864的管腳管腳名稱電管腳123.0--3-對比度(亮度)4RS=“H”,表示DB7——DB0RS=“L”,表示DB7——DB0為顯示5W=,E=,數(shù)據(jù)被讀到DB7——DB0==“ DB7——DB0的數(shù)據(jù)IR6使能信號7三態(tài)8三態(tài)9三態(tài)三態(tài)三態(tài)三態(tài)三態(tài)三態(tài)H:8位或4位并口方式,L-空S復(fù)位-LCD驅(qū)動A背光源正端K背光(DDRAM字符顯示是通過將字符顯示編碼寫入該字符顯示RAM實現(xiàn)的。根據(jù)寫入內(nèi)容的不同,可分別在液晶屏上顯示CGROM(中文字庫、HCGROM(ASCII碼字庫)及CGRAM(自定義字形的內(nèi)容三種不同字符/字型的選擇編碼范圍為:0000~0006H(其代碼分別 共4個)顯示自定義字型,02H~7FH顯示半寬ASCII碼字符,A1A0H~F7FFH顯示8192種GB2312中文字庫字形。字符顯示RAM在液晶模塊中的地址80H~9FH。本實驗中 采用串行方式驅(qū)動,其電路原理圖如下所LCD12864實驗操作流5VJLink打開文件 “ARM使用外擴(kuò)2014\3.LCD12864液晶顯示\Project\LCD12864\MDK-ARM”,雙擊“Project.uvproj”在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)5.3.3int{u8KeyNum= //LCD//LCD管腳////1 write_strdate("你好while{ }串口一通訊實STM32ST32的串口資源相當(dāng)豐富的,功能也相當(dāng)強(qiáng)勁。YT3107物聯(lián)網(wǎng)開發(fā)板所使用的ST3F07T6最多可提供5路串口,有分?jǐn)?shù)波特率發(fā)生器、支持同步單線通信和半雙工單IIrDAIRENEDA等。串口最基本的設(shè)置,就是波特率的設(shè)置。STM32的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設(shè)置相應(yīng)IO口的模式,然后配置一下波特率,數(shù)據(jù)位長度,奇偶校串口設(shè)置的一般步驟可以串口時鐘使能,GPIO時鐘使能。串口作為STM32的一個外設(shè),其時鐘由外設(shè)時鐘串口控制。STM32的每個串口都有3個控制寄存器USART_CR1~3置都是通過這3數(shù)據(jù)發(fā)送與接收。STM32的發(fā)送與接收是通過數(shù)據(jù)寄存器USART_DR來實現(xiàn)的,TDR和RDR串口狀態(tài)串口的狀態(tài)可以通過狀態(tài)寄存器USART_SR。其中包含RXNE和TC并且可以讀出來了這時候我們要做的就是盡快去USART_DR,通過讀USART_DR可以將該位清零,也可以向該位寫0,直接清除。void //1{GPIO_InitTypeDefGPIO_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;ENABLE);//使能USART1,GPIOA時鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_Init(GPIOA,&GPIO_InitStructure);//Usart1NVIC配NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3搶占優(yōu)先級3NVIC_InitStructure.NVIC_IRQChannelSubPriority=3; //子優(yōu)先級3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //根據(jù)指定的參數(shù)初始化VIC寄存器//USARTUSART_InitStructure.USART_BaudRate=9600; //bound;//一般設(shè)置為9600; USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)格式USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個停止位USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗位 USART_InitStructure.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;//收發(fā)模式USART_Init(USART1,&USART_InitStructure);//初始化串口USART_Cmd(USART1,ENABLE); }串口1對應(yīng)著PA9和PA10,分別為TXD1和RXD1,如下圖1P223P323該跳用一根“直連公線”的一端插上開發(fā)板的串口一上,另一端與一“交叉母線”的一端相連接,“交叉母線”的剩余一端連接到串口線上,然后再將串口線連接至電腦,如下圖所示。5VJLink給開發(fā)板上電 “ARM使用外擴(kuò)2014\4串口1\Project\chuankou\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download7.將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)最后打開串口調(diào)試助手 設(shè)置波特率“9600校驗位“無串口調(diào)試助手會收到如下信息在串口調(diào)試助手中發(fā)送任意5如下串口二通訊實STM32ST32的串口資源相當(dāng)豐富的,功能也相當(dāng)強(qiáng)勁。YT3107物聯(lián)網(wǎng)開發(fā)板所使用的ST3F07T6最多可提供5路串口,有分?jǐn)?shù)波特率發(fā)生器、支持同步單線通信和半雙工單IIrDAIRENEDA等。串口最基本的設(shè)置,就是波特率的設(shè)置。STM32的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設(shè)置相應(yīng)IO口的模式,然后配置一下波特率,數(shù)據(jù)位長度,奇偶校串口設(shè)置的一般步驟可以串口時鐘使能,GPIO時鐘使能。串口作為STM32的一個外設(shè),其時鐘由外設(shè)時鐘串口控制。STM32的每個串口都有3個控制寄存器USART_CR1~3置都是通過這3數(shù)據(jù)發(fā)送與接收。STM32的發(fā)送與接收是通過數(shù)據(jù)寄存器USART_DR來實現(xiàn)的,TDR和RDR串口狀態(tài)串口的狀態(tài)可以通過狀態(tài)寄存器USART_SR。其中包含RXNE和TC并且可以讀出來了這時候我們要做的就是盡快去USART_DR,通過讀USART_DR可以將該位清零,也可以向該位寫0,直接清除。TC(發(fā)送完成),當(dāng)該位被置位的時候,表示USART_DR內(nèi)的數(shù)據(jù)已經(jīng)被發(fā)送完成void //2{NVIC_InitTypeDef/*SettheVectorTablebaseaddressat0x NVIC_InitStructure.NVIC_IRQChannel= NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_Mode=USART_Mode_Rx|Init(COM1, //對應(yīng)為串口/*Enablethe 1Transmoitinterrupt:thisinterruptisgeneratedwhenthe1transmitdataregisterisempty*/USART_ITConfig(USART2,USART_IT_TXE,/*Enablethe 1Receiveinterrupt:thisinterruptisgeneratedwhenthe 1receivedataregisterisnotempty*/USART_ITConfig(USART2,USART_IT_RXNE,TxCounter=/*OutputamessageonHyperterminalusingprintffunction//printf("\n\rUSARTPrintfExample:retargettheClibraryprintffunctiontothe x,printf("\n\r !############ "- printf("\n\rSTM32F107use printf("\n\rFlash大小為:%dK字節(jié)! IOprintf("\n\r系統(tǒng)內(nèi)核時鐘頻率(SystemCoreClock)為:%dHz.\n\r",}串串口2對應(yīng)著PD5和PD6,分別為TXD2和RXD2,如下圖所串口2通訊實驗的跳線說明如下:用跳線帽將P5下面兩個腳短該跳線設(shè)置的特寫圖如下5VJLink給開發(fā)板上電 “ARM使用外擴(kuò)2014\5串口2\Project\chuankou\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download7.將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開) ,設(shè)置波特率為“115200”校驗位為“無NON,數(shù)據(jù)位為“8,停止位為“1。如下圖所示。串口調(diào)試助手會收到如下信息在串口調(diào)試助手中發(fā)送任意5板載AD實STM32ADC簡STM32擁有1~3個ADC(STM32F101/102系列只有1個ADC),這些ADC可以獨(dú)立使用,也可以使重模式(提高采樣率)。STM32的ADC是12位逐次近型的模擬數(shù)字連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式在16位數(shù)據(jù)寄存器STM32將ADC的轉(zhuǎn)換分為2個通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于打斷你的執(zhí)行的。同這個類似,注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換,在注入通道被轉(zhuǎn)換完成之后,規(guī)則通道才得以繼續(xù)轉(zhuǎn)換。STM32其ADC的規(guī)則通道組最多包含16個轉(zhuǎn)換,而注入通道組最多包含4個通道。STM32中自帶的AD14MHZ,共有16個轉(zhuǎn)換通道,每個轉(zhuǎn)換通道對ADC123_IN10表明PC0管腳可以作為AD1,AD2,AD3的第10ADC轉(zhuǎn)換的詳細(xì)設(shè)置步驟如開啟ADC使能ADC時鐘,并設(shè)置分頻因子。要使用ADC,第一步就是要使能ADC的時鐘,在使能完時鐘之后,進(jìn)行一次ADC的復(fù)位。接著我們就可以通過RCC_CFGR設(shè)置ADC的分頻因子。分頻因子要確保ADC的時鐘(ADCCLK)不要超過14Mhz。設(shè)置ADC的工作模式。在設(shè)置完分頻因子之后,我們就可以開始ADC的模式配置了,設(shè)置ADC開啟AD在設(shè)置完了以上信息后,我們就開啟AD轉(zhuǎn)換器,執(zhí)行復(fù)位校準(zhǔn)和AD是必須的!不校準(zhǔn)將導(dǎo)致結(jié)果很確ADC值。在上面的校準(zhǔn)完成之后,ADC就算準(zhǔn)備好了。板載ADC原理YLSTM32F107物聯(lián)網(wǎng)開發(fā)板板載電位器與STM32處理器的PC0管腳相連,可以實現(xiàn)AD模數(shù)轉(zhuǎn)換。外部模擬信號由電位器(可調(diào)電阻)3.3V電壓分壓得到,其硬件原理圖如/*EnableDMA1clock*//*DMA1channel1 //DMA對應(yīng)的外設(shè)DMA_InitStructure.DMA_MemoryBaseAddr=//內(nèi) DMA_InitStructure.DMA_DIR=DMA_InitStructure.DMA_BufferSize=1;DMA_InitStructure.DMA_PeripheralIncDMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc=//定義外設(shè)數(shù)據(jù)寬度為16DMA_InitStructure.DMA_MemoryDataSize=//DMA搬數(shù)據(jù)尺寸,HalfWord就是為16DMA_InitStructure.DMA_Mode=DMA_Mode_Circular; DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel1,&DMA_InitStructure);/*EnableDMA1channel1*//*EnableADC1andGPIOCclock*/ ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode=ENABLE; ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_NbrOfChannel=1; ADC_Init(ADC1,&ADC_InitStructure);//板子測試的/*ADC1regularchannel10configurationADC101,轉(zhuǎn)換時間*/ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_55Cycles5);ADC_DMACmd(ADC1, //ADC/*EnableADC1ADC_Cmd(ADC1, //開啟/*EnableADC1resetcalibarationregister*/ /*ChecktheendofADC1resetcalibrationregister //等待重/*StartADC1calibaration*/ /*ChecktheendofADC1calibration //等待校/*StartADC1SoftwareConversion*///連續(xù)轉(zhuǎn)換開始,ADC通過DMA方式不斷的更新RAMwhile{ADCConvertedValueLocal=Precent //算出百分比 //3.3V的電平,計算等效電平COM1_SEND_BUF[0]=Voltage/1000+0x30;COM1_SEND_BUF[1]='.';COM1_SEND_BUF[3]=(Voltage%100)/10+0x30; }} P223P323該跳1用一根“直連公線”的一端插上開發(fā)板的串口一上,另一端與一“交叉母線”的一端相連接,“交叉母線”的剩余一端連接到串口線上,然后再將串口線連接至電腦,如下圖所示。331286445VJLink6 “\ARM使用外擴(kuò)2014\6板載ADC\Project\ADC\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對 “9600,“無NON,數(shù)據(jù)位為“8,停止位為“1。如下圖所示。串口調(diào)試助手會收到如下信息 液晶屏上能15.調(diào)節(jié)調(diào)節(jié)CAN口1通訊實CAN是ControllerAreaNetwork的縮寫(以下稱為CAN),是ISO國際標(biāo)準(zhǔn)化的串行通數(shù)量”、“通過多個LAN,進(jìn)行大量數(shù)據(jù)的高速通信”的需要,1986年德國電氣商博世公司開發(fā)出面向汽車的CAN通信協(xié)議。此后,CAN通過ISO11898及ISO11519進(jìn)行了標(biāo)準(zhǔn)化,現(xiàn)備、工業(yè)設(shè)備等方面?,F(xiàn)場總線是自動化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,被譽(yù)為自動化領(lǐng)域CAN控制器根據(jù)兩根線上的電位差來判斷總線電平。總線電平分為顯性電平和隱性電CAN協(xié)議同時開始發(fā)送消息時,根據(jù)標(biāo)識符(Identifier以下稱為ID)決定優(yōu)先級。ID并不是表示發(fā)送的目的地址,而是表示總線的消息的優(yōu)先級。兩個以上的單元同時開始發(fā)送消息時,通信速度較快,通信距離遠(yuǎn)。最高1Mbps(距離小于40M),最遠(yuǎn)可達(dá)10KM(5Kbps)具有錯誤檢測、錯誤通知和錯誤恢復(fù)功能。所有單元都可以檢測錯誤(錯誤檢測功能,檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能),正在發(fā)送消息的單元一旦檢測出錯誤,會強(qiáng)制結(jié)束當(dāng)前的發(fā)送。強(qiáng)制結(jié)束發(fā)送的單元會不斷反復(fù)地重新發(fā)送此消息直到成功發(fā)送為止(錯誤恢復(fù)功能)。故障封閉功能。CAN可以判斷出錯誤的類型是總線上暫時的數(shù)據(jù)錯誤(如外部噪聲等)持續(xù)數(shù)據(jù)錯誤時,可將引起此故障的單元從總線上出去。連接節(jié)點(diǎn)多。CAN總線是可同時連接多個單元的總線。可連接的單元總數(shù)理論上是沒有250KbpsISO11898標(biāo)準(zhǔn),該標(biāo)準(zhǔn)的物理CANCANCANCANCANCANCANVVCAN-VCAN-顯性 隱性時間單元輸出顯性電平,總線上即為顯性電平。而電平則具有包容的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平(顯性電平比隱性電平更強(qiáng)。另外,在CAN總線的起止端都有一個120?的終端電阻,來做阻抗匹配,以減少回波反射。CANCAN1HCANCAN1H和開發(fā)板的CAN1H連接,CAN1L和開發(fā)板的CAN1L連接(同時將120ΩP23的1,2腳用跳線帽短接P2335V4.JLink5打開文件 “\ARM使用外擴(kuò)2014\7CAN1\Project\CAN\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)將CAN適配卡和電腦連接好,最后,打開CAN調(diào)試界面,設(shè)置CAN的波特率為250kbps,設(shè)置過程如下在跳出的界面中,將波特率設(shè)置 bps,然后點(diǎn)擊確定,如下圖所如果配置正確,將會出現(xiàn)下圖所示提示CAN從CANCAN口2通訊實CAN是ControllerAreaNetwork的縮寫(以下稱為CAN),是ISO國際標(biāo)準(zhǔn)化的串行通數(shù)量”、“通過多個LAN,進(jìn)行大量數(shù)據(jù)的高速通信”的需要,1986年德國電氣商博世公司開發(fā)出面向汽車的CAN通信協(xié)議。此后,CAN通過ISO11898及ISO11519進(jìn)行了標(biāo)準(zhǔn)化,現(xiàn)備、工業(yè)設(shè)備等方面。現(xiàn)場總線是自動化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,被譽(yù)為自動化領(lǐng)域CAN控制器根據(jù)兩根線上的電位差來判斷總線電平??偩€電平分為顯性電平和隱性電CAN協(xié)議同時開始發(fā)送消息時,根據(jù)標(biāo)識符(Identifier以下稱為ID)決定優(yōu)先級。ID并不是表示發(fā)送的目的地址,而是表示總線的消息的優(yōu)先級。兩個以上的單元同時開始發(fā)送消息時,通信速度較快,通信距離遠(yuǎn)。最高1Mbps(距離小于40M),最遠(yuǎn)可達(dá)10KM(5Kbps)具有錯誤檢測、錯誤通知和錯誤恢復(fù)功能。所有單元都可以檢測錯誤(錯誤檢測功能,檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能),正在發(fā)送消息的單元一旦檢測出錯誤,會強(qiáng)制結(jié)束當(dāng)前的發(fā)送。強(qiáng)制結(jié)束發(fā)送的單元會不斷反復(fù)地重新發(fā)送此消息直到成功發(fā)送為止(錯誤恢復(fù)功能)。故障封閉功能。CAN可以判斷出錯誤的類型是總線上暫時的數(shù)據(jù)錯誤(如外部噪聲等)持續(xù)數(shù)據(jù)錯誤時,可將引起此故障的單元從總線上出去。連接節(jié)點(diǎn)多。CAN總線是可同時連接多個單元的總線??蛇B接的單元總數(shù)理論上是沒有250KbpsISO11898標(biāo)準(zhǔn),該標(biāo)準(zhǔn)的物理CANCANCANCANCANCANCANVVCAN-VCAN-顯性 隱性時間單元輸出顯性電平,總線上即為顯性電平。而電平則具有包容的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平(顯性電平比隱性電平更強(qiáng)。另外,在CAN總線的起止端都有一個120?的終端電阻,來做阻抗匹配,以減少回波反射。CANCAN1HCANCAN1H和開發(fā)板的CAN2H連接,CAN1L和開發(fā)板的CAN2L連接(同時將120ΩP23的1,2腳用跳線帽短接P2335V4.JLink5打開文件 “\ARM使用外擴(kuò)2014\8CAN2\Project\CAN\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)將CAN適配卡和電腦連接好后打開CAN調(diào)試界面設(shè)置的波特率 250kbps,設(shè)置過程如在跳出的界面中,將波特率設(shè)置 bps,然后點(diǎn)擊確定,如下圖所如果配置正確,將會出現(xiàn)下圖所示提示CAN從CANCAN1有數(shù)據(jù)接收到,LED燈全滅;CAN2有數(shù)據(jù)接收到,LED觸摸屏顯示實我們一般液晶所用的觸摸屏,最多的就是電阻式觸摸屏了(多點(diǎn)觸摸屬于電容式觸摸屏,比如幾乎所有智能機(jī)都支持多點(diǎn)觸摸,它們所用的屏就是電容式的觸摸屏),我們所用的的觸摸屏屬于電阻式觸摸屏,下面簡單介紹下電阻式觸摸屏的原理。電阻式觸摸屏利用壓力感應(yīng)進(jìn)行控制。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面涂有一層透明氧化金屬(透明的導(dǎo)電電阻)導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防擦的塑料層、它的內(nèi)表面也涂有一層涂層、在他們之間有許多細(xì)小的(小于1/1000英寸)的透明點(diǎn)把兩層導(dǎo)電層隔開絕緣化,在X和Y兩個方向上產(chǎn)生信號,然后送觸摸屏控制器??刂破鱾蓽y到這一接觸并計算出電阻屏的特點(diǎn)有:是一種對外界完全的工作環(huán)境,不怕灰塵、水汽和油污可以用任何物體來觸摸,可以用來寫字畫畫,這是它們比較大的優(yōu)勢電阻觸摸屏的精度只取決于A/D轉(zhuǎn)換的精度,因此都能輕松達(dá)到4096*4096 轉(zhuǎn)換器,一般來說是需要一個控制器的,本開發(fā)板標(biāo)配的液晶驅(qū)動為ILI9341,其電路原理圖如下圖所示:1本實驗的.P2223P22短接口的2.注意以太網(wǎng)和觸摸屏的跳35V4.JLink56.打開文 “\ARM使用外擴(kuò)2014\9觸摸屏\stm32觸摸屏實驗-ILI9341觸摸顯\USER”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對而后對開發(fā)板上 ,再按下板子上的復(fù)位鍵,如下圖所按下復(fù)位鍵后,在TFT屏幕上 .用手指或筆SysTick實驗SysTick實際就是系統(tǒng)滴答定時器主要是為操作系統(tǒng)提供一個的硬件上的定時中斷。本例程通過SysTick定時器,產(chǎn)生的中斷進(jìn)行點(diǎn)燈控制。產(chǎn)生一個中斷,即使是系統(tǒng)在睡眠OSCM3器件之間的移植中不必修改系統(tǒng)定時器的代碼,移植工作一下子容易多了。如下圖兩個任務(wù)間通過SysTick輪Sysik定時器被在NVIC中,用于產(chǎn)生SYSSICK異常(異常號:15)。在以前,大多數(shù)系統(tǒng)需要一個硬件定時器來產(chǎn)生操作系統(tǒng)需要的滴答多個任務(wù)許以不同的時間片,確保沒有一個任務(wù)能霸占系統(tǒng);或者把每個定時器周期的某個時間范圍賜予特定的任務(wù)等,還有操作系統(tǒng)提供的各種定時功能,都與這個滴答定時器有關(guān)。因此,需要一個定時器來產(chǎn)生周期性的中斷,而且最好還是讓用戶程序不能隨意它的寄存器,以維持操作系統(tǒng)“心跳”的節(jié)律。Corex-M3處理器內(nèi)部包含了一個簡單的定時器。因為所有的CM3都帶有這個定時,軟件在不同CM3器件間的移植工作得以化簡。該定時器的時鐘源可以是內(nèi)部時鐘(FCLK,CM3上的自由運(yùn)行時鐘,或者是外部時鐘(CM3處理器上的SCLK信號STCLK的具體來源則由設(shè)計者決定,因此不同產(chǎn)品之間的時鐘頻率可能會大不相同,你需要檢視芯片的器件手冊來決定選擇什么作為時鐘源。席CM3CM3SysTick定時器是作為NVIC(嵌套向量中斷控制器)的一部分實現(xiàn)的。前面提到的,可以為系統(tǒng)提供一個“時基(用于切換任務(wù),同時,Systick的精準(zhǔn)計時,也可以用來作為延遲。對于時間要求嚴(yán)格的場合,SysTick的意義是相當(dāng)重大的。本實例需要用到使用GPIO管腳控制LEDLEDLEDSysTick示例中新增添的代碼進(jìn)行說明。本次為SysTick系統(tǒng)滴答中斷實驗,所以需要配置SysTick系統(tǒng)滴答參數(shù),使用SysTick_ConfigurationSysTick_Config(SystemCoreClock/100)函數(shù)可以看(SystmCoClok/100一的SystemCoreClock個時鐘數(shù)產(chǎn)生一次中斷,那么一秒鐘就會有100次中斷。(注:表示系統(tǒng)主時鐘頻率,在參數(shù)為SystemFrequency。NVIC_SetPriority函數(shù)配置中斷優(yōu)選級Function : :ConfigureaSysTickBasetimeto10 : : :void{/*SetupSysTickTimerfor10msecinterrupts if(SysTick_Config(SystemCoreClock/100)){/*Captureerror*/while(1);}/*ConfiguretheSysTickhandlerpriority*/NVIC_SetPriority(SysTick_IRQn,0x0);}以下的“InterruptConfig()”函數(shù)告訴處理器中斷向量表存放的起始地址,STM32支持中斷向量表起始地址動態(tài)設(shè)置,這個特性在SRAM調(diào)試和DFU固件升級時很有用,以為這些情況下中斷向量表起始地址已經(jīng)不是0x0000此處將中斷向量表起始地址設(shè)置為內(nèi)部Flash的起始地址0x void{/*SettheVectorTablebaseaddressat0x }我們看一下主程序main的相關(guān)LED的初始化和SysTick的中如下int{/*LEDGPIO*//*LED閃爍幾次,以確定指示燈電路正常 /*配置中斷向量表的地址等*//*配置SysTick的中斷參數(shù) /*Mainloop*/while(1){;}}從上面的main函數(shù)可以看出,main函數(shù)中只是做了LED的初始化和SysTick的中斷配while死LED燈的亮滅是在SysTick中斷服務(wù)程序中控制。下面,我們介紹關(guān)于SysTick中斷程序的實現(xiàn)。本次SysTick系統(tǒng)滴答中斷實驗需要在該文件的voidSysTick_Handler(void){}中斷接口函LED指示燈每秒點(diǎn)亮熄滅一次。我們在“stm32f10x_it.c”中的SysTick中斷接口函數(shù)中調(diào)用LED_Spark函數(shù)控制LED燈閃爍。void{}由于LED_Spark函數(shù)是在main.c中實現(xiàn)以我們要在“stm32f10x_it.c”中使用一個外部LED_Spark函數(shù),以使該函數(shù)在“stm32f10x_it.c”中可以被調(diào)用externvoid下面我們來看一下LED_Spark函數(shù)的具體實void{ IOuint32_tTimingDelayLocal=if(TimingDelayLocal!={ //50LED{} //50LED{}TimingDelayLocal該函數(shù)每一次被調(diào)用靜態(tài)本地變量TimingDelayLocal}{}}由上述實驗代碼可知每產(chǎn)生一次SysTick中斷,進(jìn)入SysTick中斷服務(wù)LED_Spark函數(shù),而我們配置的是每秒中100次SysTick中斷,那么LED_Spark函數(shù)每秒中會被調(diào)用100次,所以我們使用一個靜態(tài)本地變量TimingDelayLocal來存放該函數(shù)被調(diào)用的次數(shù)。該函數(shù)每一次被調(diào)用靜態(tài)本地變量TimingDelayLocal便會減一,當(dāng)減為0時重新賦值點(diǎn)亮LED指示燈,這樣周而復(fù)始便可以使LED指示燈每秒閃爍一次。為什么使用靜態(tài)變量TimingDelayLoca1?目的是每次進(jìn)入LED_Spark函數(shù)時靜態(tài)變量鍵字則每次每次進(jìn)入LED_Spark函數(shù)時TimingDelayLocal為0,執(zhí)行else后其值為100,退5VJLink “ARM使用外擴(kuò)2014\10SysTick\Project\SysTick\MDK-ARM”,雙擊在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開)按下復(fù)位鍵后,會發(fā)按下復(fù)位鍵后,會發(fā)現(xiàn)四個LED燈不斷的閃爍,如短暫產(chǎn)品唯一標(biāo)識實產(chǎn)品唯一的標(biāo)識(UniqueDeviceID)非常適合●用來作為序列號(例如 96位的產(chǎn)品唯一標(biāo)識所提供的參考號碼對任意一個STM32微控制器,在任何這個96位的產(chǎn)品唯一標(biāo)識,按照用戶不同的用法,可以以字節(jié)(8位)為單位,也可以以字(16位)或者全字(32)位96位獨(dú)特的ID位于地址0x1FFFF7E8~0x1FFFF7F3的系統(tǒng)區(qū),用戶可以以字節(jié)、半字、或字的方式單獨(dú)其間的任一地址,其中0x1FFFFF3中為最高字節(jié),0x1FFFF7E8中為最低字節(jié)。作為擴(kuò)展本次試驗順帶位于0x1FFFF7E0地址的“閃存容量寄存器”獲得開發(fā)板內(nèi)部集成Flash的大小信息,通過調(diào)用系統(tǒng)Printf函數(shù)來打印產(chǎn)品內(nèi)部Flash產(chǎn)品唯一標(biāo)識(UniqueDeviceID)為處理器內(nèi)部組件,這部分不需要硬件電路,這里僅在串口輸出產(chǎn)品唯一標(biāo)識(UniqueDeviceID)即可程序中定義全局變量IntDeviceSerial存放讀到的設(shè)備ID96位的獨(dú)特ID位于地址0x1FFFF7E8~0x1FFFF7F3的系統(tǒng)區(qū),程序如下uint32_tIntDeviceSerial[3]; /*全局變量IntDeviceSerial存放讀到的設(shè)備ID*/voidGet_ChipSerialNum(void){IntDeviceSerial[0]=*(IOuint32_t*)(0x1FFFF7E8);IntDeviceSerial[1]=*(IOuint32_t*)(0x1FFFF7EC);IntDeviceSerial[2]=*(IOuint32_t*)(0x1FFFF7F0);}MyDelay函數(shù)流水燈使用的延時函數(shù),用簡單的for循環(huán)實staticvoidMyDelay(IOuint32_t{for(;nCount!=0;nCount--}下面來看看在MAIN主函數(shù)中調(diào)用的Get_ChipSerialNum()以后就可以使用Printf來打印,然后作為擴(kuò)展,本次試驗順帶位于0x1FFFF7E0地址的“閃存容量寄存器”使用Printf來打印出來。 Main @retvalint{/*!<Atthisstagethemicrocontrollerclocksettingisalreadyconfigured,thisisdonethroughSystemInit()functionwhichiscalledfromstartupfile(startup_stm32f10x_xx.s)beforetobranchtoapplicationmain.ToreconfigurethedefaultsettingofSystemInit()function,refertosystem_stm32f10x.cfile/*USARTxconfiguredasBaudRate=115200WordLength=8OneStopNoHardwareflowcontroldisabled(RTSandCTSReceiveandtransmitUSART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;Init(COM1,/*OutputamessageonHyperterminalusingprintffunctionprintf("\n\rUSARTPrintfExample:retargettheClibraryprintffunctiontotheUSART\n\r");printf("\r\n\n\nSTM32F107 %sconfigured...", printf("\n\r############STM32F107############(" "- printf("printf(" |/_|/_ | | /)|)||||| printf("\\ | ||\\/| | | |</)//_|||||\\\\/|||_| |_| / |/*Mainloop*/while(1){/*OutputamessageonHyperterminalusingUSART1_SendStringfunction*/printf("\n\r產(chǎn)品唯一標(biāo)識(UniqueDeviceID)為:[%X-%X-printf("\n\r產(chǎn)品內(nèi)部Flash大小為:%dK字節(jié) IO }}1本實驗的.用跳線帽將P5下面兩個腳短該跳2.25V5VJLink給開發(fā)板上電打開文 “ARM使用外擴(kuò)2014\11產(chǎn)品唯一標(biāo)識\Project\產(chǎn)品唯一標(biāo)在跳出的keil界面中點(diǎn)擊“Rebuild在keil界面中點(diǎn)擊“download將開發(fā)板電源關(guān)閉,將jlink從開發(fā)板上拔下來(該操作很重要,jlink連接在板子上時對開) NON,串口調(diào)試助手會收到如下信息實時時鐘RTC(Real-timeclock)是實時時鐘的意思。YL開發(fā)板的處理器STM32F107集成了系統(tǒng)當(dāng)前的時間和日期的準(zhǔn)確性。實時時鐘是一個獨(dú)立的定時器。RTC實時時鐘模塊擁有一可編程的預(yù)分頻系數(shù):分頻系數(shù)最高 22032位的可編程計數(shù)器,可用于較長時間段2APB1PCLK1RTC時鐘(RTC 時鐘頻率的四分之一以上可以選擇以下三種RTC的時鐘—HSE—HSE振蕩—LSI振蕩器時2—APB1接口由— (預(yù)分頻器、鬧鐘、計數(shù)器和分頻器)只能由后備域復(fù)位3個專門的可中斷—時鐘中斷,用來產(chǎn)生一個軟件可編程的鬧—秒中斷,用來產(chǎn)生一個可編程的周期性中斷信號(最長可 秒—溢出中斷,只是內(nèi)部可編程計數(shù)器溢出并回轉(zhuǎn)為0的狀16APB1總線對其進(jìn)行讀寫操作(16.4節(jié)。APB1接口由APB1總線時鐘驅(qū)動,用來與APB1總線接口。另一部分(RTC)由一組可編程計數(shù)器組成,分成兩個主要模塊。第一個模塊是RTC的預(yù)分頻模塊,它可編程

溫馨提示

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

評論

0/150

提交評論