版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)產(chǎn)品設(shè)計(jì)與制作
(stm32機(jī)型)袁秀英石梅香項(xiàng)目2、利用SysTick實(shí)現(xiàn)溫度報(bào)警與控制任務(wù)2.5STM32深入(二)總目錄1項(xiàng)目1、利用GPIO和位帶操作實(shí)現(xiàn)溫度報(bào)警
2項(xiàng)目2、利用SysTick實(shí)現(xiàn)溫度報(bào)警與控制
3項(xiàng)目3、利用按鍵查詢實(shí)現(xiàn)參數(shù)設(shè)定及顯示
4項(xiàng)目4、利用外部中斷實(shí)現(xiàn)工件計(jì)數(shù)顯示
5項(xiàng)目5、利用計(jì)數(shù)器實(shí)現(xiàn)工件計(jì)數(shù)顯示和打包控制
6項(xiàng)目6、利用定時(shí)器實(shí)現(xiàn)直流電動(dòng)機(jī)PWM調(diào)速
7項(xiàng)目7、利用ADC實(shí)現(xiàn)土壤濕度采集
具體工作任務(wù)設(shè)計(jì)基于STM32單片機(jī)的電熱恒溫烘干箱溫度控制系統(tǒng),將溫度控制在50~250℃范圍內(nèi),要求控溫精度±20℃,同時(shí)具有超溫和欠溫報(bào)警功能。請(qǐng)進(jìn)行:1、方案設(shè)計(jì)2、器件選型3、電路和程序設(shè)計(jì)4、完成軟硬件調(diào)試。項(xiàng)目總目標(biāo)1、進(jìn)一步理解單片機(jī)開關(guān)量采集與控制系統(tǒng)的設(shè)計(jì)方法、工作步驟,掌握開發(fā)工具的使用方法;2、理解STM32單片機(jī)蜂鳴器驅(qū)動(dòng)、繼電器驅(qū)動(dòng)電路以及一般DO驅(qū)動(dòng)電路的設(shè)計(jì)方法;3、會(huì)利用滴答定時(shí)器實(shí)現(xiàn)蜂鳴器控制、LED閃爍、LED流水控制以及一般延時(shí)控制;4、會(huì)利用位帶操作或GPIO寫引腳函數(shù)實(shí)現(xiàn)蜂鳴器控制、電加熱器控制以及一般設(shè)備的開關(guān)控制;5、能看懂STM32時(shí)鐘樹,學(xué)會(huì)外部時(shí)鐘電路、復(fù)位電路設(shè)計(jì)方法和相關(guān)編程方法。6、能自主查閱庫函數(shù)相關(guān)資料。子目錄項(xiàng)目2、利用SysTick實(shí)現(xiàn)溫度報(bào)警與控制
2.1任務(wù)2.1 器件選型與方案設(shè)計(jì)2.2任務(wù)2.2 電路設(shè)計(jì)與調(diào)試
2.3任務(wù)2.3 程序設(shè)計(jì)與調(diào)試2.4任務(wù)2.4 程序框架的自主創(chuàng)建2.5任務(wù)2.5 STM32軟硬件深入(二)任務(wù)2.5
STM32軟硬件深入(二)本任務(wù)目標(biāo)1、能讀懂STM32時(shí)鐘樹;2、會(huì)根據(jù)需要進(jìn)行時(shí)鐘設(shè)置規(guī)劃;3、能基本讀懂時(shí)鐘切換程序并調(diào)用程序?qū)⑾到y(tǒng)時(shí)鐘從內(nèi)部切換到外部高速振蕩源。STM32的時(shí)鐘STM32內(nèi)部設(shè)備眾多,對(duì)工作速度的要求也不一樣有些要求高速工作,比如GPIO;有些則希望低速工作,例如RTC。為協(xié)調(diào)各器件的工作并降低功耗,STM32設(shè)計(jì)了比較復(fù)雜的,像樹一樣不斷分叉的時(shí)鐘電路,也被稱為時(shí)鐘樹??炊畷r(shí)鐘樹可以幫助我們正確進(jìn)行時(shí)鐘規(guī)劃并編寫時(shí)鐘切換程序。時(shí)鐘電路的結(jié)構(gòu)組成如圖所示。STM32時(shí)鐘引腳1、STM32時(shí)鐘引腳STM32的時(shí)鐘引腳有OSC_IN、OSC_OUT和OSC32_IN、OSC32_OUT,分別用于接收外部高速和低速時(shí)鐘。還有1個(gè)引腳MCO,用于向片外輸出時(shí)鐘信號(hào)。MCO與PA8引腳復(fù)用。上電復(fù)位后該引腳默認(rèn)為PA8。要用該引腳輸出時(shí)鐘,可以利用如下庫函數(shù)進(jìn)行設(shè)置。名稱HAL_RCC_MCOConfig(MCO引腳號(hào),MCO時(shí)鐘源,MCO分頻系數(shù))原型voidHAL_RCC_MCOConfig(uint32_tRCC_MCOx,uint32_tRCC_MCOSource,uint32_tRCC_MCODiv)功能指定MCO引腳的時(shí)鐘輸出,并對(duì)MCO引腳做相關(guān)初始化。參數(shù)1MCO引腳號(hào)(RCC_MCOx):哪個(gè)MCO引腳輸出時(shí)鐘,只有1個(gè)取值:RCC_MCO1,將STM32內(nèi)部的時(shí)鐘通過PA8引腳輸出。參數(shù)2MCO時(shí)鐘源(RCC_MCOSource),具體取值如下:RCC_MCO1SOURCE_NOCLOCK:無時(shí)鐘輸出RCC_MCO1SOURCE_SYSCLK:輸出SYSCLKRCC_MCO1SOURCE_HSI:輸出HSIRCC_MCO1SOURCE_HSE:輸出HSERCC_MCO1SOURCE_PLLCLK:輸出PLLCLK二分頻參數(shù)3MCO分頻系數(shù)(RCC_MCODiv):只有一個(gè)取值:RCC_MCODIV_1:不對(duì)MCO輸出做分頻示例HAL_RCC_MCOConfig(RCC_MCO1,RCC_MCO1SOURCE_SYSCLK,RCC_MCODIV_1);//MCO引腳輸出SYSCLKSTM32時(shí)鐘源2、STM32時(shí)鐘源時(shí)鐘信號(hào)按照速度可分為高速(HighSpeed)和低速(LowSpeed);按照時(shí)鐘來源可分為外部(External)和內(nèi)部(Internal)。虛框劃出的4個(gè)電路分別被稱為HSI、HSE、LSE、LSI時(shí)鐘源。它們分別產(chǎn)生HSI(HighSpeedInternal)、HSE(HighSpeedExternal)、LSE(LowSpeedExternal)、LSI(LowSpeedInternal)時(shí)鐘信號(hào),供stm32內(nèi)部各設(shè)備使用?;緯r(shí)鐘源STM32內(nèi)部時(shí)鐘源(1)HSI和LSI
HSI是高速內(nèi)部時(shí)鐘,RC振蕩器,頻率為8MHz,精度不高。
LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,頻率為40kHz,提供低功耗時(shí)鐘。
上電復(fù)位后HSI時(shí)鐘源工作,LSI不工作。
可以利用OSC配置庫函數(shù)啟動(dòng)或者關(guān)閉它們STM32內(nèi)部時(shí)鐘源名稱HAL_RCC_OscConfig(&OSC初始化結(jié)構(gòu)體變量)原型HAL_StatusTypeDefHAL_RCC_OscConfig(RCC_OscInitTypeDef*RCC_OscInitStruct)功能按照OSC初始化結(jié)構(gòu)體變量的值,設(shè)置RCC振蕩源。返回值類型:HAL_StatusTypeDef,返回值:(1)HAL_OK(成功)(2)HAL_ERROR(錯(cuò)誤)(3)HAL_BUSY(忙)(4)HAL_TIMEOUT(超時(shí))參數(shù)OSC初始化結(jié)構(gòu)體變量(RCC_OscInitStruct),類型:RCC_OscInitTypeDef,共有8項(xiàng)內(nèi)容1.OscillatorType配置哪個(gè)振蕩器:(1)RCC_OSCILLATORTYPE_NONE(無)(2)RCC_OSCILLATORTYPE_HSE(要配置HSE)(3)RCC_OSCILLATORTYPE_HSI(要配置HSI)(4)
RCC_OSCILLATORTYPE_LSE(要配置LSE)(5)RCC_OSCILLATORTYPE_LSI(要配置LSI)2.LSIState 希望的LSI狀態(tài):(1)RCC_LSI_OFF(關(guān)斷)(2)RCC_LSI_ON(打開)3.HSIState希望的HSI狀態(tài):(1)RCC_HSI_OFF(關(guān)斷)(2)RCC_HSI_ON(打開)4.HSICalibrationValue HSI校準(zhǔn)值,取值范圍:0x00~0x1F,默認(rèn)值:RCC_HSICALIBRATION_DEFAULT,0x105.LSEState希望的LSE狀態(tài):(1)RCC_LSE_OFF(關(guān)斷)(2)RCC_LSE_ON(打開LSEOSC,即外部晶振方式)(3)RCC_LSE_BYPASS(旁路LSEOSC,即外部時(shí)鐘方式)6.HSEState希望的HSE狀態(tài):(1)RCC_HSE_OFF(關(guān)斷)(2)RCC_HSE_ON(打開HSEOSC,即外部晶振方式)(3)RCC_HSE_BYPASS(旁路HSEOSC,即外部時(shí)鐘方式)7.HSEPredivValueHSE預(yù)分頻數(shù):RCC_HSE_PREDIV_DIV1(一分頻)或RCC_HSE_PREDIV_DIV2(二分頻)8.PLL PLL參數(shù),結(jié)構(gòu)體變量,有3項(xiàng)(1)PLLMUL:PLL倍頻系數(shù),有15個(gè)取值:RCC_PLL_MUL2~RCC_PLL_MUL16(2)PLLSource:PLL時(shí)鐘源,有2個(gè)取值:1)RCC_PLLSOURCE_HSI_DIV2(HSI二分頻)2)RCC_PLLSOURCE_HSE(HSE)(3)PLLState:希望的PLL狀態(tài),有3個(gè)取值:1)RCC_PLL_NONE(無)2)RCC_PLL_OFF/(關(guān))3)RCC_PLL_ON(開)STM32內(nèi)部時(shí)鐘源例如要開啟LSI,可寫程序:RCC_OscInitTypeDef
RCC_OscInitStru; //定義Osc初始化結(jié)構(gòu)體變量RCC_OscInitStru.OscillatorType=RCC_OSCILLATORTYPE_LSI; //要配置LSIRCC_OscInitStru.LSIState=RCC_LSI_ON; //開啟LSIHAL_RCC_OscConfig(&RCC_OscInitStru); //按照變量RCC_OscInitStru的設(shè)置初始化RCCSTM32外部時(shí)鐘源(2)HSE和LSE
HSE是高速外部時(shí)鐘源,可外接4~16MHz的晶振電路,或者<25MHz的外部時(shí)鐘源。HSE時(shí)鐘源由HSEOSC電路(振蕩頻率為4-16MHz)和多路開關(guān)組成。
LSE是低速外部時(shí)鐘,可外接接頻率為32.768kHz的晶振電路或外部時(shí)鐘源。LSE時(shí)鐘源由LSEOSC振蕩電路和多路開關(guān)組成。
STM32PLL時(shí)鐘源(2)HSE和LSE要設(shè)置HSE,編程時(shí)應(yīng)將OSC初始化結(jié)構(gòu)體變量的“OscillatorType”項(xiàng)設(shè)為:RCC_OSCILLATORTYPE_HSE要使用外部晶振。應(yīng)將OSC初始化結(jié)構(gòu)體變量的“HSEState”項(xiàng)設(shè)為:RCC_HSE_ON,即開啟HSEOSC振蕩電路,使之與晶振電路共同配合,產(chǎn)生需要的時(shí)鐘信號(hào)。要使用外部時(shí)鐘源,應(yīng)將OSC初始化結(jié)構(gòu)體變量的“HSEState”項(xiàng)設(shè)為:RCC_HSE_BYPASS,即旁路HSEOSC振蕩電路,直接使用外部時(shí)鐘源輸入的時(shí)鐘信號(hào)。STM32PLL時(shí)鐘源(2)HSE和LSE要設(shè)置LSE,編程時(shí)應(yīng)將OSC初始化結(jié)構(gòu)體變量的“OscillatorType”項(xiàng)設(shè)為:RCC_OSCILLATORTYPE_LSE要使用外部晶振。應(yīng)將OSC初始化結(jié)構(gòu)體變量的“LSEState”項(xiàng)設(shè)為:RCC_LSE_ON,即開啟LSEOSC振蕩電路,使之與晶振電路共同配合,產(chǎn)生需要的時(shí)鐘信號(hào)。要使用外部時(shí)鐘源,應(yīng)將OSC初始化結(jié)構(gòu)體變量的“LSEState”項(xiàng)設(shè)為:RCC_LSE_BYPASS,即旁路LSEOSC振蕩電路,直接使用外部時(shí)鐘源輸入的時(shí)鐘信號(hào)。STM32PLL時(shí)鐘源(3)PLLCLK
PLLCLK是PLL電路的輸出。PLL(PhaseLockedLoop)是鎖相環(huán)電路,它可以對(duì)輸入脈沖進(jìn)行倍頻。倍頻與分頻相反,可以獲得n倍于輸入頻率的時(shí)鐘。
STM32鎖相環(huán)的倍頻系數(shù)為2~16,共15種選擇。此外,PLL有三個(gè)輸入可選:HSI二分頻HSEHSE二分頻例:希望使用8MHz外部晶振,并將其產(chǎn)生的HSE信號(hào)輸入到PLL電路,9倍頻后得到72MHz的PLLCLK,可編寫程序如下:voidMyOsc_Config(void){
RCC_OscInitTypeDef
RCC_OscInitStruct;
//定義OSC初始化變量,用于設(shè)置RCC振蕩源
RCC_OscInitStruct.OscillatorType
=RCC_OSCILLATORTYPE_HSE; //設(shè)置HSE
RCC_OscInitStruct.HSEState
=RCC_HSE_ON;
//開啟外部8MHz晶振
RCC_OscInitStruct.HSEPredivValue=RCC_HSE_PREDIV_DIV1;
//HSE預(yù)分頻系數(shù)1
RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSE;
//PLL時(shí)鐘源是HSE
RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL9;
//PLL做9倍頻,得到72MHz主時(shí)鐘
RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;
//打開PLLHAL_RCC_OscConfig(&RCC_OscInitStruct);
//按照以上參數(shù),設(shè)置RCC振蕩源}STM32PLL時(shí)鐘源STM32
高速時(shí)鐘配置(1)系統(tǒng)時(shí)鐘SYSCLK
SYSCLK(SystemClock)稱為系統(tǒng)時(shí)鐘,最大頻率72MHz。
SYSCLK是最重要的時(shí)鐘為后續(xù)各個(gè)設(shè)備(例如內(nèi)核、存儲(chǔ)器、APB1外設(shè)、APB2外設(shè)、定時(shí)器、SDIO、FSMC、I2S等)提供時(shí)鐘??梢杂脦旌瘮?shù)HAL_RCC_ClockConfig(&時(shí)鐘初始化結(jié)構(gòu)體變量,F(xiàn)lash等待時(shí)間)進(jìn)行時(shí)鐘設(shè)置STM32
高速時(shí)鐘配置(1)系統(tǒng)時(shí)鐘SYSCLK
有HSI、PLLCLK和HSE三個(gè)來源
例如要設(shè)置SYSCLK來自PLLCLK,可以寫程序如下:
RCC_ClkInitTypeDef
RCC_ClkInitStruct;
//定義CLK初始化變量,用于設(shè)置RCC時(shí)鐘
RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_SYSCLK;
//準(zhǔn)備配置SYSCLK
RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;
//系統(tǒng)時(shí)鐘來自PLLCLK
HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_2);
//按照以上參數(shù)設(shè)置時(shí)鐘,F(xiàn)LASH延遲設(shè)為2個(gè)等待周期
名稱HAL_RCC_ClockConfig(&時(shí)鐘初始化結(jié)構(gòu)體變量,F(xiàn)lash等待時(shí)間)原型HAL_StatusTypeDefHAL_RCC_ClockConfig(RCC_ClkInitTypeDef*RCC_ClkInitStruct,uint32_tFLatency)功能按照時(shí)鐘初始化結(jié)構(gòu)體變量和Flash等待時(shí)間的值,設(shè)置SYSCLK、HCLK、APB1、APB2等時(shí)鐘。返回值類型:HAL_StatusTypeDef:(1)HAL_OK(成功)(2)HAL_ERROR(錯(cuò)誤)(3)HAL_BUSY(忙),(4)HAL_TIMEOUT(超時(shí))參數(shù)1
時(shí)鐘初始化結(jié)構(gòu)體變量(RCC_ClkInitStruct):類型:RCC_ClkInitTypeDef,共有5項(xiàng)內(nèi)容:1.ClockType要配置的時(shí)鐘:(1)RCC_CLOCKTYPE_SYSCLK(系統(tǒng)時(shí)鐘)(2)RCC_CLOCKTYPE_HCLK(HCLK)(3)RCC_CLOCKTYPE_PCLK1(PCLK1)(4)RCC_CLOCKTYPE_PCLK2(PCLK2)2.SYSCLKSource系統(tǒng)時(shí)鐘源:(1)RCC_SYSCLKSOURCE_HSI(來自HSI)(2)RCC_SYSCLKSOURCE_HSE(來自HSE)(3)RCC_SYSCLKSOURCE_PLLCLK(來自PLLCLK)3.AHBCLKDivider PCLK預(yù)分頻系數(shù),有9個(gè)取值:RCC_SYSCLK_DIVnn=1、2、4、8、16、64、128、256、5124.APB1CLKDivider APB1預(yù)分頻系數(shù),有5個(gè)取值:RCC_HCLK_DIVnn=1、2、4、8、165.APB2CLKDivider APB2預(yù)分頻系數(shù),有5個(gè)取值:RCC_HCLK_DIVnn=1、2、4、8、16參數(shù)2FLatency:類型:uint32_t,F(xiàn)lash等待時(shí)間,有3個(gè)取值:(1)FLASH_LATENCY_00等待周期,當(dāng)0<SYSCLK<24MHz(2)FLASH_LATENCY_11等待周期,當(dāng)24MHz<SYSCLK≤48MHz(3)FLASH_LATENCY_22等待周期,當(dāng)48MHz<SYSCLK≤72MHzSTM32
高速時(shí)鐘配置STM32
高速時(shí)鐘配置(2)AHB總線時(shí)鐘(HCLK)HCLK時(shí)鐘信號(hào)由SYSCLK經(jīng)AHB預(yù)分頻器獲得。HCLK可以為AHB總線設(shè)備、內(nèi)核等設(shè)備提供時(shí)鐘。AHB預(yù)分頻器的分頻系數(shù)為1、2、4、8、16、64、128、256、512,可編程設(shè)置。默認(rèn)系數(shù)為1,因此AHB時(shí)鐘(HCLK)最大值也是72MHz。可利用庫函數(shù)HAL_RCC_ClockConfig(&時(shí)鐘初始化結(jié)構(gòu)體變量,F(xiàn)lash等待時(shí)間)例如:設(shè)置AHB預(yù)分頻系數(shù)=2(已知SYSCLK=72MHz)RCC_ClkInitTypeDef
RCC_ClkInitStruct; //定義CLK初始化變量
RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK;
//準(zhǔn)備配置HCLKRCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV2;
//AHB預(yù)分頻系數(shù)=2HCLK=72MHz/2=36MHzHAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_1);
//按照以上參數(shù)設(shè)置時(shí)鐘,F(xiàn)LASH延遲設(shè)為1個(gè)等待周期STM32
高速時(shí)鐘配置(3)APB1(PCLK1)和APB2(PCLK2)時(shí)鐘分別為掛在APB1和APB2總線上的外設(shè)例如GPIO等提供時(shí)鐘APB1和APB2預(yù)分頻系數(shù)為1、2、4、8、16可選可利用庫函數(shù)HAL_RCC_ClockConfig(&時(shí)鐘初始化結(jié)構(gòu)體變量,F(xiàn)lash等待時(shí)間)例如:設(shè)置APB1預(yù)分頻系數(shù)=2(已知SYSCLK=72MHz)RCC_ClkInitTypeDef
RCC_ClkInitStruct; //定義CLK初始化變量
RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_PCLK1;
//準(zhǔn)備配置PCLK1RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;
//APB1預(yù)分頻系數(shù)=2PCLK1=HCLK/2HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_2);
//按照以上參數(shù)設(shè)置時(shí)鐘,F(xiàn)LASH延遲設(shè)為2個(gè)等待周期例:希望系統(tǒng)使用8MHz外部晶振,并獲得72MHz的SYSCLK、72MHz的HCLK、36MHz的PCLK1、72MHz的PCLK2,請(qǐng)問該如何進(jìn)行設(shè)置并編程?解:可將外部8MHz晶振作為HSE時(shí)鐘源,將HSE作為PLL輸入,PLL9倍頻后作為SYSCLK,AHB預(yù)分頻系數(shù)設(shè)為1、APB1預(yù)分頻系數(shù)設(shè)為2、APB2預(yù)分頻系數(shù)設(shè)為1。程序如下:void
MyOsc_Config(void)
//OSC設(shè)置函數(shù){
RCC_OscInitTypeDef
RCC_OscInitStruct;
//定義OSC初始化變量,用于設(shè)置RCC振蕩源RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSE;//是HSERCC_OscInitStruct.HSEState=RCC_HSE_ON;
//開啟外部8MHz晶振RCC_OscInitStruct.HSEPredivValue=RCC_HSE_PREDIV_DIV1;
//HSE預(yù)分頻系數(shù)1RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSE;
//PLL時(shí)鐘源是HSERCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL9;
//PLL做9倍頻,得到72MHz主時(shí)鐘RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;
//打開PLLHAL_RCC_OscConfig(&RCC_OscInitStruct);
//按照以上參數(shù),設(shè)置RCC振蕩源}STM32
高速時(shí)鐘配置void MyClk_Config(void)
//CLK設(shè)置函數(shù){RCC_ClkInitTypeDef
RCC_ClkInitStruct;
//定義CLK初始化變量,用于設(shè)置RCC時(shí)鐘
RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK\
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
//準(zhǔn)備配置SYSCLK、HCLK、PCLK1、PCLK2
RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;
//系統(tǒng)時(shí)鐘來自PLLCLK:72MHz
RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;
//AHB一分頻:72MHz
RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;
//APB1二分頻:36MHz
RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;
//APB2一分頻:72MHz
HAL_RCC_ClockConfig(&RCC_ClkInitStruct,F(xiàn)LASH_LATENCY_2);
//按照以上參數(shù)設(shè)置系統(tǒng)時(shí)鐘,F(xiàn)LASH延遲設(shè)為2個(gè)等待周期}STM32
高速時(shí)鐘配置做一做:請(qǐng)?jiān)囍鴮⑷缟蟽蓚€(gè)函數(shù)合成到一個(gè)函數(shù)里STM32
高速時(shí)鐘配置STM32
高速時(shí)鐘配置(4)CSS時(shí)鐘安全系統(tǒng)CSS是時(shí)鐘安全系統(tǒng)(ClockSecuritySystem),用于監(jiān)測(cè)HSE時(shí)鐘信號(hào),并在檢測(cè)到HSE故障時(shí)產(chǎn)生保護(hù):自動(dòng)將時(shí)鐘切換回HSI,并關(guān)閉HSE振蕩器。這可以確保系統(tǒng)不會(huì)因?yàn)闆]有時(shí)鐘而崩潰。CSS可通過編程關(guān)閉或打開,相關(guān)庫函數(shù)如表所示。原型voidHAL_RCC_EnableCSS(void)voidHAL_RCC_DisableCSS(void)功能使能CSS安全系統(tǒng)禁止CSSSTM32
高速時(shí)鐘配置(5)GPIO設(shè)備時(shí)鐘開啟
所有GPIO端口都位于APB2總線,由PCLK2提供時(shí)鐘。CPU執(zhí)行GPIOA時(shí)鐘開啟庫函數(shù)后,GPIOA時(shí)鐘使能信號(hào)變?yōu)?,與門打開,PCLK2時(shí)鐘信號(hào)被送入GPIOA。名稱__HAL_RCC_GPIOx_CLK_ENABLE()__HAL_RCC_GPIOx_CLK_DISABLE()功能使能GPIOx時(shí)鐘,x=A~G禁止GPIOx時(shí)鐘,x=A~GSTM32
高速時(shí)鐘配置(8)其它從圖中還可以看出,PCLK2不僅可以為GPIO等APB1設(shè)備提供時(shí)鐘,PCLK2還可送TIM1和8倍頻器,為TIM1和TIM8提供時(shí)鐘PCLK2還可送ADC預(yù)分頻器,為ADC提供時(shí)鐘。同樣,PCLK1不僅可以為APB1設(shè)備提供時(shí)鐘還可送TIM2~7倍頻器,為TIM2~TIM7提供時(shí)鐘此外,HCLK還可為SDIO(SD卡)、FSMC(擴(kuò)展存儲(chǔ)器)設(shè)備提供時(shí)鐘SYSCLK也可以直接為I2S2、I2S3(Inter-ICSound)設(shè)備提供時(shí)鐘。PLLCLK還可以為USB設(shè)備提供時(shí)鐘。以上這些設(shè)備的時(shí)鐘開啟/關(guān)閉函數(shù),可以在文件:stm32f1xx_hal_rcc.c和stm32f1xx_hal_rcc.h中找到,這里不再敘述。STM32
低速時(shí)鐘配置低速時(shí)鐘主要為IWDG(獨(dú)立看門狗)和RTC(實(shí)時(shí)時(shí)鐘)電路提供時(shí)鐘。其中獨(dú)立看門狗的時(shí)鐘IWDGCLK只能來自LSI。RTC時(shí)鐘RTCCLK則可以來自LSI、LSE,或HSE的128分頻。
STM32
低速時(shí)鐘配置名稱__HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__)功能配置RTC時(shí)鐘源參數(shù)__RTC_CLKSOURCE__有4個(gè)取值:RCC_RTCCLKSOURCE_NO_CLK: RTC無時(shí)鐘源RCC_RTCCLKSOURCE_LSE:RTC時(shí)鐘來自LSERCC_RTCCLKSOURCE_LSI:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度律師事務(wù)所專業(yè)復(fù)印機(jī)及法律文件管理系統(tǒng)采購合同3篇
- 二零二五年度禽類養(yǎng)殖標(biāo)準(zhǔn)化示范項(xiàng)目禽類采購合同3篇
- 二零二五年度電子商務(wù)大賽賽事知識(shí)產(chǎn)權(quán)保護(hù)與侵權(quán)處理合同3篇
- 2024種植業(yè)務(wù)戰(zhàn)略合作伙伴合同樣本版B版
- 二零二五版高端石材采購與安裝服務(wù)合同3篇
- 二零二五年度車隊(duì)車輛租賃與售后服務(wù)合同2篇
- 2024藥品采購及冷鏈物流服務(wù)保障協(xié)議3篇
- 2025年度校園食堂廚房設(shè)備采購與安裝綜合服務(wù)合同2篇
- 2025年度拍賣合同信息安全與隱私保護(hù)
- 2025年度智能穿戴設(shè)備銷售合同協(xié)議4篇
- 2024年工程咨詢服務(wù)承諾書
- 青桔單車保險(xiǎn)合同條例
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 《獅子王》電影賞析
- 2023-2024學(xué)年天津市部分區(qū)九年級(jí)(上)期末物理試卷
- DB13-T 5673-2023 公路自愈合瀝青混合料薄層超薄層罩面施工技術(shù)規(guī)范
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 哈爾濱研學(xué)旅行課程設(shè)計(jì)
- 2024 smart汽車品牌用戶社區(qū)運(yùn)營全案
- 中醫(yī)護(hù)理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報(bào)告
評(píng)論
0/150
提交評(píng)論