版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LED燈控制設(shè)計(jì)與實(shí)現(xiàn)數(shù)碼管數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)串行通信的設(shè)計(jì)與實(shí)現(xiàn)數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)勤思考勤動(dòng)手勤總結(jié)LED燈控制設(shè)計(jì)與實(shí)現(xiàn)數(shù)碼管數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)串行通信的設(shè)計(jì)與實(shí)現(xiàn)數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)軟硬結(jié)合理實(shí)結(jié)合虛實(shí)結(jié)合線上下結(jié)合學(xué)做結(jié)合LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)一嵌入式STM32認(rèn)知1.1.1嵌入式系統(tǒng)概述目錄嵌入式系統(tǒng)的定義嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)的發(fā)展嵌入式系統(tǒng)的應(yīng)用一、嵌入式系統(tǒng)的定義定義一嵌入式系統(tǒng)是“控制、監(jiān)視或輔助設(shè)備、機(jī)器或用于工廠運(yùn)作的設(shè)備”。定義二嵌入式系統(tǒng)是以應(yīng)用為中心,以現(xiàn)代計(jì)算機(jī)技術(shù)為基礎(chǔ),能夠根據(jù)用戶需求(功能、可靠性、成本、體積、功耗、環(huán)境等)靈活裁剪軟硬件模塊的專用計(jì)算機(jī)系統(tǒng)。一、嵌入式系統(tǒng)的定義以應(yīng)用為中心
強(qiáng)調(diào)了嵌入式系統(tǒng)的目標(biāo),即滿足用戶的特定需求。就絕大多數(shù)完整的嵌入式系統(tǒng)而言,用戶打開(kāi)電源即可直接享用其功能,無(wú)需二次開(kāi)發(fā)或僅需少量配置操作。一、嵌入式系統(tǒng)的定義以現(xiàn)代計(jì)算機(jī)技術(shù)為核心
說(shuō)明了嵌入式系統(tǒng)相關(guān)技術(shù),比如集成電路設(shè)計(jì)技術(shù)、系統(tǒng)結(jié)構(gòu)技術(shù)、傳感器與檢測(cè)技術(shù)、嵌入式操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)技術(shù)、通信技術(shù)和信號(hào)處理等技術(shù)均圍繞著計(jì)算機(jī)基本原理,與計(jì)算機(jī)技術(shù)密不可分。一、嵌入式系統(tǒng)的定義軟硬件可裁剪
嵌入式系統(tǒng)針對(duì)的應(yīng)用場(chǎng)景非常多,這會(huì)導(dǎo)致在系統(tǒng)設(shè)計(jì)時(shí)會(huì)有差異性極大的設(shè)計(jì)指標(biāo)要求,以至于現(xiàn)實(shí)上很難有一套方案滿足所有的系統(tǒng)要求,所以根據(jù)需求的不同,靈活裁剪軟硬件、組建符合要求的最終系統(tǒng)是嵌入式技術(shù)發(fā)展的必然技術(shù)路線。一、嵌入式系統(tǒng)的定義專用計(jì)算機(jī)系統(tǒng)
專用計(jì)算機(jī)是區(qū)別與通用計(jì)算機(jī)的,因?yàn)榍度胧较到y(tǒng)的應(yīng)用場(chǎng)合大多對(duì)可靠性、實(shí)時(shí)性有較高要求,這就決定了服務(wù)于特定應(yīng)用的專用系統(tǒng)是嵌入式系統(tǒng)的主流模式,它并不強(qiáng)調(diào)系統(tǒng)的通用性和可擴(kuò)展性。一、嵌入式系統(tǒng)的定義嵌入式系統(tǒng)與通用計(jì)算機(jī)的區(qū)別嵌入式系統(tǒng)通用計(jì)算機(jī)形式與類型按應(yīng)用進(jìn)行分類大、中、小型機(jī)、微機(jī)組成軟硬件緊密結(jié)合軟硬件相對(duì)獨(dú)立系統(tǒng)資源系統(tǒng)資源緊缺系統(tǒng)資源充足開(kāi)發(fā)方式開(kāi)發(fā)平臺(tái)一般是通用計(jì)算機(jī)運(yùn)行平臺(tái)是嵌入式系統(tǒng)開(kāi)發(fā)平臺(tái)和運(yùn)行平臺(tái)都是通用計(jì)算機(jī)一、嵌入式系統(tǒng)的定義嵌入式系統(tǒng)由硬件和軟件組成軟件輸出輸入處理器存儲(chǔ)器一、嵌入式系統(tǒng)的定義“兩嵌入、一專用”兩嵌入:硬件嵌入芯片、軟件嵌入硬件,軟硬件是緊密聯(lián)系在一起的。一專用:嵌入式系統(tǒng)具有特定的應(yīng)用場(chǎng)景,其功能是固定的。一、嵌入式系統(tǒng)的定義硬件+軟件(CPU+存儲(chǔ)器+I/O+中斷(定時(shí)器、外部請(qǐng)求、通信)等集于一塊芯片)人體+思想(大腦+大腦皮層+四肢(I/O)+器官(如生物鐘(中斷定時(shí))、耳嘴(串行通信))等二、嵌入式系統(tǒng)的特點(diǎn)1.專用性強(qiáng)2.體積小型化3.實(shí)時(shí)性好4.可裁剪性好5.可靠性高6.功耗低7.不具備自身開(kāi)發(fā)能力8.“軟硬件協(xié)同設(shè)計(jì)”三、嵌入式系統(tǒng)的發(fā)展微型計(jì)算機(jī)時(shí)代系統(tǒng)結(jié)構(gòu)單一,處理效率低存儲(chǔ)容量十分有限,幾乎無(wú)用戶接口。20世紀(jì)70年代微控制器階段硬件使用嵌入式微處理器通用性弱,系統(tǒng)開(kāi)銷(xiāo)小,效率較高。20世紀(jì)80年代片上系統(tǒng)兼容性好,操作系統(tǒng)的內(nèi)核小。20世紀(jì)90年代21世紀(jì)Internet為標(biāo)志的嵌入式系統(tǒng)嵌入式處理器集成了網(wǎng)絡(luò)接口,嵌入式設(shè)備應(yīng)用于網(wǎng)絡(luò)環(huán)境。四、嵌入式系統(tǒng)的應(yīng)用四、嵌入式系統(tǒng)的應(yīng)用工業(yè)控制領(lǐng)域中四、嵌入式系統(tǒng)的應(yīng)用交通管理領(lǐng)域中四、嵌入式系統(tǒng)的應(yīng)用智能家居中的應(yīng)用四、嵌入式系統(tǒng)的應(yīng)用環(huán)境工程與自然中的應(yīng)用總結(jié)嵌入式系統(tǒng)的定義嵌入式系統(tǒng)的組成嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)的發(fā)展LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)一嵌入式STM32認(rèn)知1.1.2STM32嵌入式概述目錄ARMCortex系列STM32F103微控制器概述STM32與51單片機(jī)的區(qū)別一、ARMCortex系列ARM是公司的名字是一種處理器體積小低功耗低成本高性能一、ARMCortex系列ARM內(nèi)核一、ARMCortex系列ARM內(nèi)核適用于高性能設(shè)備一、ARMCortex系列ARM內(nèi)核能效最高、成本最低一、ARMCortex系列ARM內(nèi)核實(shí)時(shí)處理器一、ARMCortex系列ARM內(nèi)核低功耗嵌入式系統(tǒng)二、STM32微控制器概述ARM公司Cortex-M系列意法半導(dǎo)體獲得Cortex-M系列內(nèi)核授權(quán)推出32位STM32微控制器代表的是這個(gè)單片機(jī)是32位的微控制器二、STM32微控制器概述ARM公司Cortex-M系列意法半導(dǎo)體獲得Cortex-M系列內(nèi)核授權(quán)推出32位STM32微控制器一、ARMCortex系列STM32微控制器的分類二、STM32微控制器概述哪些微控制器屬于高性能MCU哪些屬于無(wú)線系列哪些屬于低功耗系列二、STM32微控制器概述二、STM32微控制器概述二、STM32微控制器概述命名規(guī)則示例:產(chǎn)品系列STM32=基于ARM?的32位微控制器產(chǎn)品類型F=通用類型產(chǎn)品子系列引腳數(shù)目閃存存儲(chǔ)器容量封裝溫度范圍內(nèi)部代碼A或者空(詳見(jiàn)產(chǎn)品數(shù)據(jù)手冊(cè))選項(xiàng)B=128KB的閃存存儲(chǔ)器C=256KB的閃存存儲(chǔ)器D=384KB的閃存存儲(chǔ)器E=512KB的閃存存儲(chǔ)器H=BGAT=LQFPU=VFQFPNY=WLCSP64xxx=已編程的器件代號(hào)(3個(gè)數(shù)字)TR=卷帶式包裝
101=基本型102=USB基本型USB2.0全速設(shè)備103=增強(qiáng)型105或107=互聯(lián)型T=36腳C=48腳R=64腳V=100腳
Z=144腳4=16KB的閃存6=32KB的閃存8=64KB的閃存存儲(chǔ)器6AxxxSTM32F103ZET6=工業(yè)級(jí)溫度范圍,-40℃~85℃7=工業(yè)級(jí)溫度范圍,-40℃~105℃二、STM32微控制器概述,二、STM32微控制器概述命名規(guī)則示例:產(chǎn)品系列STM32=基于ARM?的32位微控制器產(chǎn)品類型F=通用類型產(chǎn)品子系列引腳數(shù)目閃存存儲(chǔ)器容量封裝溫度范圍內(nèi)部代碼A或者空(詳見(jiàn)產(chǎn)品數(shù)據(jù)手冊(cè))選項(xiàng)B=128KB的閃存存儲(chǔ)器C=256KB的閃存存儲(chǔ)器D=384KB的閃存存儲(chǔ)器E=512KB的閃存存儲(chǔ)器H=BGAT=LQFPU=VFQFPNY=WLCSP64xxx=已編程的器件代號(hào)(3個(gè)數(shù)字)TR=卷帶式包裝
101=基本型102=USB基本型,USB2.0全速設(shè)備103=增強(qiáng)型105或107=互聯(lián)型T=36腳C=48腳R=64腳V=100腳
Z=144腳4=16KB的閃存6=32KB的閃存8=64KB的閃存存儲(chǔ)器6AxxxSTM32F103ZET6=工業(yè)級(jí)溫度范圍,-40℃~85℃7=工業(yè)級(jí)溫度范圍,-40℃~105℃二、STM32微控制器概述命名規(guī)則STM32F103R6按照命名規(guī)則分析該芯片為具有64個(gè)引腳、32KB的閃存存儲(chǔ)器的通用增強(qiáng)型STM32芯片。二、STM32微控制器概述
STM32F103主要特性
STM32F103家族中不同型號(hào)芯片內(nèi)核相同工作頻率相同但片內(nèi)FLASH存儲(chǔ)器和SRAM存儲(chǔ)器的容量以及片內(nèi)外設(shè)數(shù)量有所不同,對(duì)外部的通信接口數(shù)量和芯片封裝也各不相同,因此性價(jià)比也各不相同。三、STM32與51單片機(jī)的區(qū)別序號(hào)STM32F103AT89C511集成了32位的ARMCortex-M3內(nèi)核,最高工作頻率可達(dá)72MHz8位的CPU,工作頻率12MHz2具有512kB片內(nèi)FLASH存儲(chǔ)器和64kB片內(nèi)SRAM存儲(chǔ)器4kBROM和128字節(jié)RAM3內(nèi)部集成了8MHz晶體振蕩器,可外接4~16MHz時(shí)鐘源外接6~24MHz4具有睡眠、停機(jī)、待機(jī)等三種低功耗工作模式無(wú)5集成了11個(gè)定時(shí)器:4個(gè)16位的通用定時(shí)器,2個(gè)16內(nèi)部集位的可產(chǎn)生PWM波控制電機(jī)的定時(shí)器,2個(gè)16位的可驅(qū)動(dòng)DAC的定時(shí)器,2個(gè)加窗的看門(mén)狗定時(shí)器和1個(gè)24位的系統(tǒng)節(jié)拍定時(shí)器(24位減計(jì)數(shù))2個(gè)定時(shí)/計(jì)數(shù)器三、STM32與51單片機(jī)的區(qū)別序號(hào)STM32F103AT89C516集成了內(nèi)部溫度傳感器和實(shí)時(shí)時(shí)鐘RTC無(wú)7具有112根高速通用輸入輸出口(GPIO),可從其中任選16根作為外部中斷輸入口,幾乎全部GPIO可承受5V輸入(PA0~PA7、PB0~PB1\PC0~PC5、PC13~PC15和PF6~PF10除外)32根IO口線,4個(gè)端口P0~P38集成了13個(gè)外部通信接口:2個(gè)I2C、3個(gè)SPI(18Mbps,其中復(fù)用2個(gè)I2S)、1個(gè)CAN(2.0B)、5個(gè)UART、1個(gè)USB2.0設(shè)備和1個(gè)并行SDIO1個(gè)UART9具有12通道的DMA控制器,支持定時(shí)器、ADC、DAC、SDIO、I2S、SPI、I2C和UART外設(shè)無(wú)總結(jié)與作業(yè)學(xué)習(xí)ARMCortex系列內(nèi)核STM32F103微控制器定義、特點(diǎn)、命名規(guī)則STM32與51單片機(jī)的區(qū)別預(yù)習(xí)下節(jié)課內(nèi)容LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)一嵌入式STM32認(rèn)知1.1.3嵌入式STM32F10X固件庫(kù)重構(gòu)目錄固件庫(kù)的認(rèn)識(shí)與重構(gòu)自建庫(kù)整合Keil5工程模板創(chuàng)建一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)
庫(kù)函數(shù)類型程序是意法半導(dǎo)體公司針對(duì)STM32F10x微控制器的全部外設(shè)提供的可以抽象訪問(wèn)的一種函數(shù),所謂的“抽象訪問(wèn)”是指當(dāng)訪問(wèn)片內(nèi)外設(shè)時(shí),不需要關(guān)心片內(nèi)外設(shè)寄存器的地址和各位的含義,而是通過(guò)庫(kù)函數(shù)定義的常量和函數(shù)調(diào)用直接訪問(wèn)。一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)固件庫(kù)那么什么是固件庫(kù)呢?一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)
STM32固件庫(kù)根據(jù)CMSIS標(biāo)準(zhǔn)(即ARMCortex微控制器軟件接口標(biāo)準(zhǔn))而設(shè)計(jì)的。
CMSIS標(biāo)準(zhǔn)由ARM和芯片生產(chǎn)商共同提出,讓不同的芯片公司生產(chǎn)的CortexM3微控制器能在軟件上基本兼容。一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)
STM32F10x標(biāo)準(zhǔn)外設(shè)庫(kù)ST公司是基于STM32F1系列微控制器的固件庫(kù)進(jìn)行STM32F103開(kāi)發(fā)的一把利器。可以像在標(biāo)準(zhǔn)C語(yǔ)言編程中調(diào)用printf()一樣,在STM32F10x的開(kāi)發(fā)中可調(diào)用標(biāo)準(zhǔn)外設(shè)庫(kù)的庫(kù)函數(shù),進(jìn)行應(yīng)用開(kāi)發(fā)。一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)固件庫(kù)的下載從ST官方網(wǎng)站中下載1資源中直接下載2一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)固件庫(kù)的認(rèn)識(shí)一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)這些庫(kù)函數(shù)是我們開(kāi)發(fā)程序所必須的嗎?顯然不是一、固件庫(kù)的認(rèn)識(shí)與重構(gòu)固件庫(kù)的重構(gòu)內(nèi)核STM32F10X固件庫(kù)用戶對(duì)象二、自建庫(kù)整合STM32F10X_ALIB二、自建庫(kù)整合STM32F10X_ALIBcl是互聯(lián)型產(chǎn)品vl是超值型產(chǎn)品xl是超高密度產(chǎn)品ld是低密度產(chǎn)品md是中等密度產(chǎn)品hd是高密度產(chǎn)品二、自建庫(kù)整合STM32F10X_ALIB
1內(nèi)核、2設(shè)備、23外圍、2用戶、3系統(tǒng)。二、自建庫(kù)整合STM32F10X_ALIB
1內(nèi)核、1設(shè)備、23外圍、1用戶、3系統(tǒng)。三、Keil5工程模板創(chuàng)建1.工程搭建與函數(shù)庫(kù)添加——建工程加芯片三、Keil5工程模板創(chuàng)建1.工程搭建與函數(shù)庫(kù)添加——建分組加文件(.C和.S)三、Keil5工程模板創(chuàng)建1.工程搭建與函數(shù)庫(kù)添加——加.h路徑到編譯三、Keil5工程模板創(chuàng)建2.keil5開(kāi)發(fā)編譯環(huán)境設(shè)置——選擇編譯器三、Keil5工程模板創(chuàng)建2.keil5開(kāi)發(fā)編譯環(huán)境設(shè)置——鏈接文件三、Keil5工程模板創(chuàng)建2.keil5開(kāi)發(fā)編譯環(huán)境設(shè)置——目標(biāo)文件總結(jié)與作業(yè)固件庫(kù)的認(rèn)識(shí)與重構(gòu)自建庫(kù)整合Keil5工程模板創(chuàng)建總結(jié)作業(yè)下載固件庫(kù)重構(gòu)固件庫(kù)整合固件庫(kù)LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一LED燈軟件程序設(shè)計(jì)步驟1、程序設(shè)計(jì)軟件:KeiluVision52、新建工程并保存LED燈軟件程序設(shè)計(jì)步驟3、添加芯片到工程LED燈軟件程序設(shè)計(jì)步驟4、修改添加文件夾LED燈軟件程序設(shè)計(jì)步驟5、添加C文件到工程LED燈軟件程序設(shè)計(jì)步驟6、添加S文件到工程LED燈軟件程序設(shè)計(jì)步驟7、設(shè)置H文件到路徑LED燈軟件程序設(shè)計(jì)步驟8、全局變量宏定義方法1:LED燈軟件程序設(shè)計(jì)步驟8、全局變量宏定義方法2:LED燈軟件程序設(shè)計(jì)步驟9、新建添加.c文件到USER文件夾LED燈軟件程序設(shè)計(jì)步驟PB0引腳輸出控制led燈的亮滅和閃爍;對(duì)應(yīng)電路LED亮?xí)rPB0輸出低電平;
LED滅時(shí)PB0輸出高電平;亮滅閃爍需要在亮滅后加一定的延時(shí)程序;不停循環(huán)就實(shí)現(xiàn)上述功能。10、ledflash.c文件編寫(xiě)思路及流程根據(jù)功能需求分析、軟硬結(jié)合、書(shū)寫(xiě)細(xì)化流程步驟:LED燈軟件程序設(shè)計(jì)步驟1、預(yù)處理包含頭文件2、端口初始化3、LED閃爍思路:
無(wú)限循環(huán){PB_PIN_0設(shè)置高電平延時(shí)1秒P0_PIN_0設(shè)置低電平延時(shí)1秒}
11、ledflash.c文件包括語(yǔ)句LED燈軟件程序設(shè)計(jì)步驟//1、預(yù)處理包含頭文件#include<stm32f10x.h>//包含stm32f10系列#include<delay.h>//包含延時(shí)函數(shù)//2、intmain(void)//主函數(shù){//端口初始化://端口定義結(jié)構(gòu)體、時(shí)鐘配置并使能,成員賦值初始化 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure); 12、ledflash.c代碼編寫(xiě)LED燈軟件程序設(shè)計(jì)步驟
//無(wú)限循環(huán)閃爍點(diǎn)亮while(1) {GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_RESET); Delay(1000);GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_SET); Delay(1000); }
} 12、ledflash.c代碼重點(diǎn)關(guān)注刷紅的字符。 LED燈軟件程序設(shè)計(jì)步驟13、編譯鏈接生成.HEX文件重新構(gòu)建按鈕加載程序代碼(HEX文件)到芯片嵌入式軟件設(shè)計(jì)歸納總結(jié)新建工程選芯片加載標(biāo)庫(kù)到工程配置參數(shù)到環(huán)境新建文件存點(diǎn)C加載點(diǎn)C到工程編寫(xiě)代碼生點(diǎn)H加載點(diǎn)H到芯片簡(jiǎn)潔:建工程加標(biāo)庫(kù)、編代碼驗(yàn)效果四顆LED流水燈設(shè)計(jì)與制作四、輸出函數(shù)整理(一)#include<stm32f10x.h>//包含如下端口寫(xiě)函數(shù)1.整個(gè)端口_寫(xiě)字函數(shù)GPIO_Write(GPIOX,temp)2.端口位_寫(xiě)位函數(shù)GPIO_WriteBit(GPIOX,GPIO_Pin_Y,Z)3.端口位_置位/復(fù)位函數(shù)GPIO_SetBits(GPIOX,GPIO_Pin_Y)GPIO_ResetBits(GPIOX,GPIO_Pin_Y)(二)#include<sys.h>//包含端口位寫(xiě)函數(shù)
PXout(Y)=Z
注:X端口(A--G),Y端口引腳號(hào)(0--15),Z端口引腳電平0或1,temp表示臨時(shí)字變量0X0000-0XFFFF;LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一四顆LED流水燈效果圖修改后的文件夾及文件名四顆LED流水燈設(shè)計(jì)與制作四顆LED流水燈設(shè)計(jì)與制作硬件設(shè)計(jì)四顆LED流水燈設(shè)計(jì)與制作1、軟件工程名修改、C文件添加四顆LED流水燈設(shè)計(jì)與制作2、軟件編寫(xiě)思路及流程根據(jù)功能分析、軟硬結(jié)合、細(xì)化流程:PB0--PB3引腳輸出控制4顆led燈的亮滅和閃爍;對(duì)應(yīng)電路LED亮?xí)r對(duì)應(yīng)引腳輸出低電平;
LED滅時(shí)對(duì)應(yīng)引腳輸出高電平;亮滅閃爍需要在當(dāng)前狀態(tài)加一定的延時(shí)程序;按照流水燈的順序依次全部點(diǎn)亮后全滅;不停循環(huán)就實(shí)現(xiàn)上述功能。四顆LED流水燈設(shè)計(jì)與制作3、軟件代碼結(jié)構(gòu)(1)預(yù)處理包含頭文件(2)端口及引腳初始化(3)引腳輸出流水閃爍當(dāng)前顯示狀態(tài)下,各對(duì)應(yīng)引腳輸出高電平
或低電平延時(shí)1秒下一顯示狀態(tài)下,各對(duì)應(yīng)引腳輸出高電平或低電平延時(shí)1秒無(wú)限循環(huán)while(1)四顆LED流水燈設(shè)計(jì)與制作4、軟件代碼編寫(xiě)(1)預(yù)處理包含頭文件#include<stm32f10x.h>//包含stm32f10系列#include<delay.h>//包含延時(shí)函數(shù)(2)intmain(void)//主函數(shù){//端口初始化:端口定義結(jié)構(gòu)體、時(shí)鐘配置并使能,成員賦值初始化 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=
GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //GPIO_InitStructure.GPIO_Pin=0X000F; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure); 引腳或|運(yùn)算賦值端口整體賦值1有效0無(wú)效四顆LED流水燈設(shè)計(jì)與制作4、軟件代碼編寫(xiě)//流水燈循環(huán)閃爍while(1) {GPIO_Write(GPIOB,0X000F);Delay(1000); GPIO_Write(GPIOB,0X0007);Delay(1000); GPIO_Write(GPIOB,0X0003);Delay(1000); GPIO_Write(GPIOB,0X0001);Delay(1000); GPIO_Write(GPIOB,0X0000);Delay(1000); }GPIO_Write(GPIO_temp)X端口(A--G)temp表示臨時(shí)字變量0X0000—0XFFFF}//重點(diǎn)關(guān)注刷紅的字符變化,0X表示16進(jìn)制數(shù)。 四顆LED流水燈設(shè)計(jì)與制作一、頭文件申明#include<*.h>二、端口初始化結(jié)構(gòu)體類型變量定義、使能成員賦值、結(jié)構(gòu)初始化三、流水燈控制端口送數(shù)延時(shí)等待依次循環(huán)四顆LED流水燈設(shè)計(jì)與制作四、輸出函數(shù)整理(一)#include<stm32f10x.h>//包含如下端口寫(xiě)函數(shù)1.整個(gè)端口_寫(xiě)字函數(shù)GPIO_Write(GPIOX,temp)2.端口位_寫(xiě)位函數(shù)GPIO_WriteBit(GPIOX,GPIO_Pin_Y,Z)3.端口位_置位/復(fù)位函數(shù)GPIO_SetBits(GPIOX,GPIO_Pin_Y)GPIO_ResetBits(GPIOX,GPIO_Pin_Y)(二)#include<sys.h>//包含端口位寫(xiě)函數(shù)
PXout(Y)=Z
注:X端口(A--G),Y端口引腳號(hào)(0--15),Z端口引腳電平0或1,temp表示臨時(shí)字變量0X0000-0XFFFF;LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)三8LED流水燈、跑馬燈流水燈特點(diǎn)跑馬燈特點(diǎn)一、LED8流水燈、跑馬燈設(shè)計(jì)與仿真LED流水燈、跑馬燈效果圖修改后的文件夾及文件名硬件設(shè)計(jì)軟件設(shè)計(jì)故障排除二、LED8流水燈設(shè)計(jì)與制作LED8流水燈設(shè)計(jì)與制作硬件設(shè)計(jì)LED8流水燈設(shè)計(jì)與制作軟件設(shè)計(jì)1.軟件工程名修改、C文件添加LED8流水燈設(shè)計(jì)與制作軟件設(shè)計(jì)2.軟件編寫(xiě)思路及流程功能分析、軟硬結(jié)合、細(xì)化流程根據(jù)PB0--PB7引腳輸出控制8顆led燈的亮滅和閃爍;對(duì)應(yīng)電路LED亮?xí)r對(duì)應(yīng)引腳輸出低電平;對(duì)應(yīng)電路LED滅時(shí)對(duì)應(yīng)引腳輸出高電平;亮滅閃爍需要在當(dāng)前狀態(tài)加一定的延時(shí)程序;按照流水燈的順序依次全部點(diǎn)亮后全滅不停循環(huán)
就實(shí)現(xiàn)上述功能。LED8流水燈設(shè)計(jì)與制作軟件設(shè)計(jì)3.軟件代碼結(jié)構(gòu)(1)預(yù)處理包含頭文件(2)端口及引腳初始化(3)引腳輸出流水閃爍無(wú)限循環(huán)while(1){當(dāng)前顯示狀態(tài)下,各對(duì)應(yīng)引腳輸出高電平或低電平
延時(shí)1秒
下一顯示狀態(tài)下,各對(duì)應(yīng)引腳輸出高電平或低電平
延時(shí)1秒
共9次送數(shù)延時(shí);}軟件設(shè)計(jì)4.軟件代碼編寫(xiě)(1)預(yù)處理包含頭文件
#include<stm32f10x.h>#include<delay.h>(2)intmain(void)
{//端口初始化:結(jié)構(gòu)定義、時(shí)鐘使能,成員賦值 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.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;
//GPIO_InitStructure.GPIO_Pin=0X00FF; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
引腳或|運(yùn)算賦值端口整體賦值1有效0無(wú)效二、LED8流水燈設(shè)計(jì)與制作LED8流水燈設(shè)計(jì)與制作軟件設(shè)計(jì)4.軟件代碼編寫(xiě)while(1){GPIO_Write(GPIOB,0X00FF);Delay(1000);
GPIO_Write(GPIOB,0X007F);Delay(1000);
GPIO_Write(GPIOB,0X003F);Delay(1000);
GPIO_Write(GPIOB,0X001F);Delay(1000); GPIO_Write(GPIOB,0X000F);Delay(1000);
GPIO_Write(GPIOB,0X0007);Delay(1000);
GPIO_Write(GPIOB,0X0003);Delay(1000);
GPIO_Write(GPIOB,0X0001);Delay(1000);
GPIO_Write(GPIOB,0X0000);Delay(1000); }}
粘貼修改標(biāo)紅的十六進(jìn)制復(fù)制這四行語(yǔ)句LED8流水燈設(shè)計(jì)與制作故障排除軟件代碼優(yōu)化1:移位循環(huán)法inti,temp;//定義整形循環(huán)變量i和臨時(shí)變量temp
while(1)
{for(i=0;i<9;i++)//流水燈{temp=0x00ff>>i;//0x00ff右移i位賦值tempGPIO_Write(GPIOB,temp);Delay(500);}for(i=0;i<9;i++)//跑馬燈{temp=~(0x0080>>i);//0x0080右移i位后取反賦值tempGPIO_Write(GPIOB,temp);Delay(500); }}//~按位取反,!位取反,!=邏輯判斷不等于。
LED8流水燈設(shè)計(jì)與制作故障排除軟件代碼優(yōu)化2:數(shù)組循環(huán)法inti;
intlsd[9]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X010,X00};
intpmd[9]={0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE,0X00};
while(1)
{for(i=0;i<9;i++)//流水燈 {GPIO_Write(GPIOB,lsd[i]);Delay(500); } for(i=0;i<9;i++)//跑馬燈 {GPIO_Write(GPIOB,pmd[i]);Delay(500);
}
}
總結(jié)多l(xiāng)ed燈亮滅控制方法
順序語(yǔ)句法方法1端口送數(shù)
GPIO_Write()延時(shí)等待Delay()依次循環(huán)while(1)
移位循環(huán)法方法2右移邏輯運(yùn)算符>>依次移位循環(huán)送數(shù)、延時(shí)等待
for(初值、條件、增量)
數(shù)組循環(huán)法方法3依定義數(shù)組、循環(huán)送數(shù)、延時(shí)等待lsd[],首數(shù)組元數(shù)為lsd[0]總結(jié)知識(shí)點(diǎn)~、!、!=邏輯運(yùn)算符區(qū)分1>>右移邏輯表達(dá)式2for()與while()循環(huán)區(qū)別
3數(shù)組[]定義使用4LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)三一鍵多能(流水、跑馬、爆閃)文件復(fù)制修改一、一鍵多能LED控制設(shè)計(jì)與仿真硬件設(shè)計(jì)二、一鍵多能LED控制硬件設(shè)計(jì)硬件設(shè)計(jì)1.輸入按鍵信號(hào)的檢測(cè)2.消除抖動(dòng)的措施一次有效按鍵檢測(cè)由按鍵按下(低電平)和按鍵彈起(高電平)兩個(gè)過(guò)程組成。消除按鍵由高電平變?yōu)榈碗娖揭约坝傻碗娖阶優(yōu)楦唠娖剿a(chǎn)生的抖動(dòng)尖峰脈沖。(1)硬件去抖,在按鍵上并聯(lián)一只0.1-1uF的電容;(2)軟件去抖,需要在按下和彈起各增加5-10ms的延時(shí);二、一鍵多能LED控制硬件設(shè)計(jì)按鍵抖動(dòng)及軟件去抖流程如下圖:一鍵多能LED控制硬件設(shè)計(jì)按鍵觸點(diǎn)機(jī)械抖動(dòng)檢測(cè)按鍵釋放按鍵二、一鍵多能LED控制硬件設(shè)計(jì)1.軟件工程名修改、C文件添加三、一鍵多能LED控制軟件設(shè)計(jì)2.軟件編寫(xiě)思路及流程一鍵多能LED控制軟件設(shè)計(jì)根據(jù)功能分析、軟硬結(jié)合、細(xì)化流程:KEY_LED按鍵識(shí)別次數(shù)決定顯示的功能
初始狀態(tài)
==0led全滅
==1
流水燈閃爍
==2跑馬燈閃爍
==3爆閃燈閃爍
==4流、跑、爆輪流閃爍
==5三、一鍵多能LED控制軟件設(shè)計(jì)3.軟件代碼結(jié)構(gòu)一鍵多能LED控制軟件設(shè)計(jì)(1)預(yù)處理包含頭文件(2)端口及引腳初始化(3)輸入按鍵次數(shù)控制輸出引腳led閃爍無(wú)限循環(huán)while(1)
{if(key_num==0)初始狀態(tài)全滅
==1
流水燈閃爍
==2跑馬燈閃爍
==3爆閃燈閃爍
==4流、跑、爆輪流閃爍
==5key_num=0返回到起始滅燈
}
三、一鍵多能LED控制軟件設(shè)計(jì)4.軟件新增修改函數(shù)構(gòu)建一鍵多能LED控制軟件設(shè)計(jì)(1)/*端口初始化函數(shù)*/(2)/*按鍵識(shí)別與鍵值返回*/(3)/*輸出閃爍燈功能函數(shù)*/voidGpio_Init();對(duì)輸入輸出端口引腳初始化定義。u8Key_Scan(void);識(shí)別按鍵是否為一次有效按鍵,將識(shí)別鍵位次數(shù)返回。voidLsd_Led8();流水燈數(shù)組法。voidPmd_Led8();跑馬燈數(shù)組法。voidBsd_Led8();爆閃燈數(shù)組法。(4)函數(shù)調(diào)用根據(jù)Key_Scan(void)返回值,決定調(diào)用哪一閃爍函數(shù)或幾種的組合函數(shù)。三、一鍵多能LED控制軟件設(shè)計(jì)總結(jié)按鍵消抖方法:硬件法和軟件六步法1一鍵多能法:識(shí)別有效鍵值次數(shù)、輪流循環(huán)2函數(shù)調(diào)用:根據(jù)鍵值數(shù)調(diào)用功能函數(shù)3LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)三一鍵多能代碼解讀軟件代碼組成:子函數(shù)編寫(xiě)與函數(shù)調(diào)用一鍵多能代碼解讀1.預(yù)處理包含頭文件2.變量、數(shù)組定義3.輸入輸出端口引腳初始化子函數(shù)4.按鍵識(shí)別與鍵值返回子函數(shù)5.輸出閃爍燈功能子函數(shù)(流水、跑馬、爆閃)6.主函數(shù){調(diào)用輸入輸出端口引腳初始化子函數(shù)while(1) {根據(jù)按鍵的鍵值返回值調(diào)用不同的閃爍燈子函數(shù) }}一鍵多能代碼解讀1.預(yù)處理包含頭文件#預(yù)處理
include包含define宏定義.h頭文件<>申明系統(tǒng)頭文件KEY_LED替代讀取PB15引腳狀態(tài)值函數(shù)值(0或1)
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)
一鍵多能代碼解讀2.變量、數(shù)組定義
u8等效于C51語(yǔ)言u(píng)nsignedchar無(wú)符號(hào)8位字符
數(shù)據(jù)類型,相當(dāng)于一個(gè)字節(jié)8位二進(jìn)制數(shù)。
u16等效于C51語(yǔ)言u(píng)nsignedint無(wú)符號(hào)16位整形
數(shù)據(jù)類型,相當(dāng)于二個(gè)字節(jié)16位二進(jìn)制數(shù)。
數(shù)組[],首元數(shù)重0開(kāi)始,如:lsd[0]的值為0XFF;
0X表示16進(jìn)制數(shù)。
一鍵多能代碼解讀3.輸入輸出端口引腳初始化子函數(shù)一鍵多能代碼解讀4.按鍵識(shí)別與鍵值返回子函數(shù)一鍵多能代碼解讀5.輸出閃爍燈功能子函數(shù)(流水、跑馬、爆閃)一鍵多能代碼解讀6.主函數(shù)一鍵多能代碼解讀6.主函數(shù)一鍵多能代碼解讀6.主函數(shù)一鍵多能代碼解讀6.主函數(shù)總結(jié)
讀功能第一步注程序整體實(shí)現(xiàn)的功能,重點(diǎn)注寫(xiě)與硬件接口相對(duì)應(yīng)功能。
讀流程第二步注程序函數(shù)實(shí)現(xiàn)的功能,重點(diǎn)注寫(xiě)主函數(shù)調(diào)用子函數(shù)的流程及功能。
讀語(yǔ)句第三步注程序語(yǔ)句實(shí)現(xiàn)在函數(shù)中的功能,重點(diǎn)注寫(xiě)該語(yǔ)句在函數(shù)的作用。
讀寫(xiě)思改調(diào)拓LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)三一鍵多能中斷按鍵識(shí)別一鍵多能中斷按鍵識(shí)別一鍵多能中斷按鍵識(shí)別軟件代碼組成:子函數(shù)編寫(xiě)與函數(shù)調(diào)用一鍵多能中斷按鍵識(shí)別1.預(yù)處理包含頭文件2.變量、數(shù)組定義3.輸入輸出端口引腳初始化子函數(shù)4.外部中斷配置子函數(shù)5.輸出閃爍燈功能子函數(shù)(流水、跑馬、爆閃)6.主函數(shù)初始化端口子函數(shù)和外中斷子函數(shù)while(1){根據(jù)按鍵的鍵值返回值調(diào)用不同的閃爍燈
子函數(shù)}}
7.外中斷服務(wù)函數(shù)(鍵位識(shí)別)一鍵多能中斷按鍵識(shí)別1.外部中斷配置子函數(shù)一鍵多能代碼解讀2.主函數(shù)修改*60行增加外中斷輸入配置函數(shù),配置PB15引腳為外中斷。
一鍵多能中斷按鍵識(shí)別3.中斷服務(wù)函數(shù)一鍵多能中斷按鍵識(shí)別3.中斷服務(wù)函數(shù)一鍵多能中斷按鍵識(shí)別3.中斷服務(wù)函數(shù)一鍵多能外部中斷函數(shù)總結(jié)外部中斷初始化子函數(shù)1.端口引腳配置數(shù)字量輸入方式2.端口引腳配置對(duì)應(yīng)中斷線3.中斷線參數(shù)配置4.中斷優(yōu)先級(jí)分組設(shè)置5.中斷向量初始化外部中斷服務(wù)函數(shù)1.中斷通道號(hào)函數(shù)2.處理中斷事件3.清除中斷標(biāo)志位
寫(xiě)功能第一步注寫(xiě)程序整體實(shí)現(xiàn)的功能,重點(diǎn)注寫(xiě)與硬件接口相對(duì)應(yīng)功能。
寫(xiě)流程第二步注程序函數(shù)實(shí)現(xiàn)的功能流程,重點(diǎn)注寫(xiě)主函數(shù)調(diào)用子函數(shù)的流程及功能。
寫(xiě)語(yǔ)句第三步寫(xiě)程序語(yǔ)句代碼,與注釋混合書(shū)寫(xiě),中英混合書(shū)寫(xiě)。
讀寫(xiě)思改調(diào)拓優(yōu)代碼一鍵多能代碼編寫(xiě)總結(jié)LED燈控制設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目一任務(wù)四汽車(chē)轉(zhuǎn)向燈汽車(chē)轉(zhuǎn)向燈文件復(fù)制修改硬件設(shè)計(jì)--汽車(chē)轉(zhuǎn)向燈開(kāi)關(guān)選擇一、汽車(chē)轉(zhuǎn)向燈硬件設(shè)計(jì)仿真單刀三擲開(kāi)關(guān)硬件設(shè)計(jì)--左轉(zhuǎn)、右轉(zhuǎn)文字添加
汽車(chē)轉(zhuǎn)向燈硬件設(shè)計(jì)一、汽車(chē)轉(zhuǎn)向燈硬件設(shè)計(jì)硬件設(shè)計(jì)1.單刀三擲開(kāi)關(guān)2.消除抖動(dòng)的措施模擬控制汽車(chē)轉(zhuǎn)向燈的左轉(zhuǎn)、停止、右轉(zhuǎn)三個(gè)輸入開(kāi)關(guān)量,控制VD1、VD2兩只發(fā)光二極管的閃爍。按照一鍵多能任務(wù)點(diǎn)動(dòng)按鈕的消抖方法:(1)硬件去抖,在按鍵上并聯(lián)一只0.1-1uF的電容;(2)軟件去抖,需要在檢測(cè)按鍵按下時(shí)增加10ms-20ms的延時(shí)。一、汽車(chē)轉(zhuǎn)向燈硬件設(shè)計(jì)1.軟件工程名修改、C文件添加
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年海洋工程設(shè)備生產(chǎn)合同范本3篇
- 2024年度外派勞務(wù)派遣與風(fēng)險(xiǎn)控制合同3篇
- 2024年版?zhèn)€人寵物交易標(biāo)準(zhǔn)協(xié)議版
- 2024年港口疏浚與施工合同
- 2024年私人建筑承包協(xié)議范例版B版
- 2024年度醫(yī)療設(shè)備維護(hù)人員聘用合同書(shū)樣本3篇
- 懷孕的課程設(shè)計(jì)
- 2024年知識(shí)產(chǎn)權(quán)代理居間服務(wù)協(xié)議版B版
- 2024年太陽(yáng)能光伏組件高空清洗高空作業(yè)人員權(quán)益保障合同3篇
- 好吃的餅干課程設(shè)計(jì)
- 干眼癥的防治課件
- 金融工程-廈門(mén)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 西門(mén)子plc實(shí)訓(xùn)總結(jié)2000字(4篇)
- 人音版五年級(jí)上冊(cè)音樂(lè)期末測(cè)試題
- 加油站投資概算表
- 危險(xiǎn)廢物管理臺(tái)賬模板(附錄B)(2)(3)里邊一共五張表表一是產(chǎn)生的臺(tái)賬表二是入危廢間填的表三和表五出危廢間和轉(zhuǎn)移時(shí)填的表四是有危廢自行利用處置時(shí)填的
- 16CJ72-1 預(yù)制及拼裝輕型板
- 抑郁相關(guān)疼痛機(jī)制性治療
- 玻璃幕墻設(shè)計(jì)說(shuō)明
- DL-T 1966-2019 火力發(fā)電廠機(jī)組檢修監(jiān)理規(guī)范
- 壓力容器安全知識(shí)課件
評(píng)論
0/150
提交評(píng)論