www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]STM8庫函數(shù)學習筆記之時鐘管理相關(guān)函數(shù):void CLK_DeInit(void); void CLK_HSECmd(FunctionalState NewState); void CLK_HSICmd(FunctionalState NewState); void CLK_LSICmd(FunctionalState NewState); void CL

STM8庫函數(shù)學習筆記之時鐘管理

相關(guān)函數(shù):

void CLK_DeInit(void);
void CLK_HSECmd(FunctionalState NewState);
void CLK_HSICmd(FunctionalState NewState);
void CLK_LSICmd(FunctionalState NewState);
void CLK_CCOCmd(FunctionalState NewState);
void CLK_ClockSwitchCmd(FunctionalState NewState);
void CLK_FastHaltWakeUpCmd(FunctionalState NewState);
void CLK_SlowActiveHaltWakeUpCmd(FunctionalState NewState);
void CLK_PeripheralClockConfig(CLK_Peripheral_TypeDef CLK_Peripheral, FunctionalState NewState);
ErrorStatus CLK_ClockSwitchConfig(CLK_SwitchMode_TypeDef CLK_SwitchMode, CLK_Source_TypeDef CLK_NewClock, FunctionalState

ITState, CLK_CurrentClockState_TypeDef CLK_CurrentClockState);
void CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler);
void CLK_CCOConfig(CLK_Output_TypeDef CLK_CCO);
void CLK_ITConfig(CLK_IT_TypeDef CLK_IT, FunctionalState NewState);
void CLK_SYSCLKConfig(CLK_Prescaler_TypeDef CLK_Prescaler);
void CLK_SWIMConfig(CLK_SWIMDivider_TypeDef CLK_SWIMDivider);
void CLK_CANConfig(CLK_CANDivider_TypeDef CLK_CANDivider);
void CLK_ClockSecuritySystemEnable(void);
void CLK_SYSCLKEmergencyClear(void);
void CLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDef CLK_HSICalibrationValue);
u32 CLK_GetClockFreq(void);
CLK_Source_TypeDef CLK_GetSYSCLKSource(void);
FlagStatus CLK_GetFlagStatus(CLK_Flag_TypeDef CLK_FLAG);
ITStatus CLK_GetITStatus(CLK_IT_TypeDef CLK_IT);
void CLK_ClearITPendingBit(CLK_IT_TypeDef CLK_IT);


//-----------------------------------------------------------------------------------------
void CLK_DeInit(void);

恢復相關(guān)的時鐘寄存器到默認值

參數(shù):無
返回值:無

注意:
當要復位CCOR寄存器時,如果CCOEN位被置位,則需要先復位CCOEN位,然后再復位CCOSEL位,復位CCOEN位和復位CCOSEL位的操作必須連續(xù)。

這個理解不知對不對,是根據(jù)庫函數(shù)的幫助來理解的,但測試結(jié)果,無論CCOEN是否置位,調(diào)用后都能恢復CCOR寄存器。

//-----------------------------------------------------------------------------------------

void CLK_HSECmd(FunctionalState NewState);

啟用或禁用外部高速振蕩器(HSE)

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_HSICmd(FunctionalState NewState);

啟用或禁用內(nèi)部高速振蕩器(HSI 16MHz)

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_LSICmd(FunctionalState NewState);

啟用或禁用內(nèi)部低速振蕩器(LSI 128KHz)

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_CCOCmd(FunctionalState NewState);

啟用或禁用可配置的時鐘輸出功能

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_ClockSwitchCmd(FunctionalState NewState);

手動啟動或關(guān)閉時鐘切換

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_FastHaltWakeUpCmd(FunctionalState NewState);

使能或禁止從停機模式(Halt)或活躍停機模式(Active Halt)中快速喚醒。

停機模式(Halt):CPU和片上設(shè)備完全停止工作,定時喚醒單元AWU也停止,僅由外部中斷及復位喚醒。

活躍停機模式(Active Halt):保留一個定時喚醒單元AWU工作,CPU和片上設(shè)備全停止工作,AWU和外部中斷及復位均可喚醒

使能后內(nèi)部高速振蕩器(HSI)會自動打開,且作為主時鐘源(fMASTER)(CKM=SWI=HSI),然后從停機模式(Halt)或活躍停機模式(Active Halt)中

快速喚醒。

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_SlowActiveHaltWakeUpCmd(FunctionalState NewState);

啟用或禁止活躍停機模式下的電壓調(diào)節(jié)器

但是這個函數(shù)并沒有字面上的喚醒功能。但是跟自動喚醒(AWU)功能有關(guān)。

一旦MCU進入活躍停機模式時,主電壓調(diào)節(jié)器將默認關(guān)閉(DISABLE),從而喚醒時間將比較長,所以這個函數(shù)就為了在快速喚醒與低功耗之間選
擇。

參數(shù):
NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

如果為了能快速從活躍停機模式中喚醒,進入活躍停機前則調(diào)用CLK_SlowActiveHaltWakeUpCmd(ENABLE);但功耗較大。

如果進入活躍停機模式前沒有調(diào)用CLK_SlowActiveHaltWakeUpCmd(ENABLE);或調(diào)用了CLK_SlowActiveHaltWakeUpCmd(DISABLE);即默認的情況下

,喚醒時間比較長,但功耗較低。

關(guān)于AWU(自動喚醒功能的詳細說明請查看手冊)

//-----------------------------------------------------------------------------------------

void CLK_PeripheralClockConfig(CLK_Peripheral_TypeDef CLK_Peripheral, FunctionalState NewState);

啟用或禁用指定的外設(shè)時鐘,默認所有的外設(shè)時鐘都是啟用的。

參數(shù):
CLK_Peripheral 外設(shè)類型
可選值:
CLK_PERIPHERAL_I2C
CLK_PERIPHERAL_SPI
CLK_PERIPHERAL_UART1
CLK_PERIPHERAL_UART2
CLK_PERIPHERAL_UART3
CLK_PERIPHERAL_TIMER6
CLK_PERIPHERAL_TIMER4
CLK_PERIPHERAL_TIMER5
CLK_PERIPHERAL_TIMER2
CLK_PERIPHERAL_TIMER3
CLK_PERIPHERAL_TIMER1
CLK_PERIPHERAL_AWU
CLK_PERIPHERAL_ADC
CLK_PERIPHERAL_CAN

NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

ErrorStatus CLK_ClockSwitchConfig(CLK_SwitchMode_TypeDef CLK_SwitchMode, CLK_Source_TypeDef CLK_NewClock, FunctionalState

ITState, CLK_CurrentClockState_TypeDef CLK_CurrentClockState);

系統(tǒng)時鐘切換配置

參數(shù):

CLK_SwitchMode, 切換模式
可選值:
CLK_SWITCHMODE_MANUAL 手動切換
CLK_SWITCHMODE_AUTO 自動切換

CLK_NewClock,新的時鐘源
可選值:
CLK_SOURCE_HSI 內(nèi)部16MHz高速振蕩器
CLK_SOURCE_LSI 內(nèi)部128KHz低速振蕩器
CLK_SOURCE_HSE 外部時鐘

ITState,啟用或禁用時鐘切換中斷
可選值:
DISABLE 禁用
ENABLE 啟用

CLK_CurrentClockState,當前使用的時鐘源在切換到新的時鐘源后關(guān)閉或繼續(xù)開啟。
可選值:
CLK_CURRENTCLOCKSTATE_DISABLE 關(guān)閉
CLK_CURRENTCLOCKSTATE_ENABLE 開啟

返回值:
如果切換成功返回SUCCESS,否則返回ERROR

//-----------------------------------------------------------------------------------------

void CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler);

配置內(nèi)部高速振蕩器(HSI)的分頻器

參數(shù):
HSIPrescaler,分頻值
可選值:
CLK_PRESCALER_HSIDIV1 內(nèi)部高速時鐘 1 分頻
CLK_PRESCALER_HSIDIV2 內(nèi)部高速時鐘 2 分頻
CLK_PRESCALER_HSIDIV4 內(nèi)部高速時鐘 4 分頻
CLK_PRESCALER_HSIDIV8 內(nèi)部高速時鐘 8 分頻
CLK_PRESCALER_CPUDIV1 CPU時鐘 1 分頻
CLK_PRESCALER_CPUDIV2 CPU時鐘 2 分頻
CLK_PRESCALER_CPUDIV4 CPU時鐘 4 分頻
CLK_PRESCALER_CPUDIV8 CPU時鐘 8 分頻
CLK_PRESCALER_CPUDIV16 CPU時鐘 16 分頻
CLK_PRESCALER_CPUDIV32 CPU時鐘 32 分頻
CLK_PRESCALER_CPUDIV64 CPU時鐘 64 分頻
CLK_PRESCALER_CPUDIV128 CPU時鐘 128 分頻

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_CCOConfig(CLK_Output_TypeDef CLK_CCO);

配置指定時鐘輸出引腳(CCO)的時鐘

參數(shù):
CLK_CCO:
可選值:
CLK_OUTPUT_HSI 內(nèi)部高速振蕩器頻率16MHz/分頻值(HSIDIV)
CLK_OUTPUT_LSI 內(nèi)部低速振蕩器 128KHz
CLK_OUTPUT_HSE 外部振蕩器
CLK_OUTPUT_CPU CPU時鐘
CLK_OUTPUT_CPUDIV2 CPU時鐘 2 分頻
CLK_OUTPUT_CPUDIV4 CPU時鐘 4 分頻
CLK_OUTPUT_CPUDIV8 CPU時鐘 8 分頻
CLK_OUTPUT_CPUDIV16 CPU時鐘 16 分頻
CLK_OUTPUT_CPUDIV32 CPU時鐘 32 分頻
CLK_OUTPUT_CPUDIV64 CPU時鐘 64 分頻
CLK_OUTPUT_HSIRC fHSI
CLK_OUTPUT_MASTER fMASTER
CLK_OUTPUT_OTHERS fCPU

返回值:無

指定的時鐘輸出引腳必須通過配置寄存器Px_CR1對應(yīng)的位為1來設(shè)置為上拉輸入或推挽輸出模式。

//-----------------------------------------------------------------------------------------

void CLK_ITConfig(CLK_IT_TypeDef CLK_IT, FunctionalState NewState);

啟用或禁用指定的時鐘中斷

參數(shù):
CLK_IT,中斷源,中斷配置和標志由軟件清零
可選值:
CLK_IT_CSSD 時鐘安全系統(tǒng)檢測標志
CLK_IT_SWIF 時鐘切換中斷標志

NewState: 新的狀態(tài)值
DISABLE 禁用
ENABLE 啟用

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_SYSCLKConfig(CLK_Prescaler_TypeDef CLK_Prescaler);

配置內(nèi)部高速振蕩器(HSI)和CPU時鐘分頻器

參數(shù):
CLK_Prescaler,指定HSI或CPU時鐘預(yù)分頻值
可選值:
CLK_PRESCALER_HSIDIV1 內(nèi)部高速振蕩器 1 分頻
CLK_PRESCALER_HSIDIV2 內(nèi)部高速振蕩器 2 分頻
CLK_PRESCALER_HSIDIV4 內(nèi)部高速振蕩器 4 分頻
CLK_PRESCALER_HSIDIV8 內(nèi)部高速振蕩器 8 分頻
CLK_PRESCALER_CPUDIV1 CPU時鐘 1 分頻
CLK_PRESCALER_CPUDIV2 CPU時鐘 2 分頻
CLK_PRESCALER_CPUDIV4 CPU時鐘 4 分頻
CLK_PRESCALER_CPUDIV8 CPU時鐘 8 分頻
CLK_PRESCALER_CPUDIV16 CPU時鐘 16 分頻
CLK_PRESCALER_CPUDIV32 CPU時鐘 32 分頻
CLK_PRESCALER_CPUDIV64 CPU時鐘 64 分頻
CLK_PRESCALER_CPUDIV128 CPU時鐘 128 分頻

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_SWIMConfig(CLK_SWIMDivider_TypeDef CLK_SWIMDivider);

配置SWIM時鐘分頻器

參數(shù):
CLK_SWIMDivider,SWIM時鐘分頻值
可選值:
CLK_SWIMDIVIDER_2 SWIM時鐘 2 分頻
CLK_SWIMDIVIDER_OTHER SWIM時鐘不分頻

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_CANConfig(CLK_CANDivider_TypeDef CLK_CANDivider);

配置CAN時鐘分頻器

參數(shù):

CLK_CANDivider,CAN時鐘分頻值
可選值:
CLK_CANDIVIDER_1 CAN時鐘頻率 = HSE/1
CLK_CANDIVIDER_2 CAN時鐘頻率 = HSE/2
CLK_CANDIVIDER_3 CAN時鐘頻率 = HSE/3
CLK_CANDIVIDER_4 CAN時鐘頻率 = HSE/4
CLK_CANDIVIDER_5 CAN時鐘頻率 = HSE/5
CLK_CANDIVIDER_6 CAN時鐘頻率 = HSE/6
CLK_CANDIVIDER_7 CAN時鐘頻率 = HSE/7
CLK_CANDIVIDER_8 CAN時鐘頻率 = HSE/8

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_ClockSecuritySystemEnable(void);

啟用時鐘安全系統(tǒng)。一旦啟用就不能禁用,直到下一次復位。

參數(shù):無

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_SYSCLKEmergencyClear(void);

重置時鐘切換忙(SWBSY)標志,以復位時鐘切換過程。
如果由于某種原因時鐘切換沒有成功,軟件可通過清除標志位SWBSY以復位當前的切換操作,
使寄存器CLK_SWR恢復原值(原時鐘源)。
如果在同一時間軟件嘗試置位SWEN和復位SWBSY,復位SWBSY的動作優(yōu)先。

參數(shù):無

返回值:無

//-----------------------------------------------------------------------------------------

void CLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDef CLK_HSICalibrationValue);

修正內(nèi)部高速振蕩器頻率

參數(shù):

CLK_HSICalibrationValue,校準值。
可選值:
CLK_HSITRIMVALUE_0 校準值為 0
CLK_HSITRIMVALUE_1 校準值為 1
CLK_HSITRIMVALUE_2 校準值為 2
CLK_HSITRIMVALUE_3 校準值為 3
CLK_HSITRIMVALUE_4 校準值為 4
CLK_HSITRIMVALUE_5 校準值為 5
CLK_HSITRIMVALUE_6 校準值為 6
CLK_HSITRIMVALUE_7 校準值為 7

返回值:無

注意:在大容量產(chǎn)品上,只有位2:0是可用的。
在中等容量或小容量產(chǎn)品上,位3:0或2:0是可用的,取決于選項字節(jié)的配置(參見數(shù)據(jù)手冊)。

//-----------------------------------------------------------------------------------------

u32 CLK_GetClockFreq(void);

獲得系統(tǒng)主時鐘頻率


參數(shù):無

返回值: 32位的主時鐘頻率

//-----------------------------------------------------------------------------------------

CLK_Source_TypeDef CLK_GetSYSCLKSource(void);

獲得系統(tǒng)時鐘源

參數(shù):無

返回值:
CLK_SOURCE_HSI 時鐘源為內(nèi)部高速振蕩器
CLK_SOURCE_LSI 時鐘源為內(nèi)部低速振蕩器
CLK_SOURCE_HSE 時鐘源為外部高速振蕩器

//-----------------------------------------------------------------------------------------

FlagStatus CLK_GetFlagStatus(CLK_Flag_TypeDef CLK_FLAG);

獲得指定的時鐘標志的置位情況

參數(shù):

CLK_FLAG,要獲得的標志
可選值:
CLK_FLAG_LSIRDY 內(nèi)部低速振蕩器就緒標志
CLK_FLAG_HSIRDY 內(nèi)部高速振蕩器就緒標志
CLK_FLAG_HSERDY 外部高速振蕩器就緒標志
CLK_FLAG_SWIF 時鐘切換中斷標志
CLK_FLAG_SWBSY 時鐘切換忙標志
CLK_FLAG_CSSD 系統(tǒng)時鐘安全檢測標志
CLK_FLAG_AUX 輔助振蕩器的開關(guān)狀態(tài),(如果輔助振蕩器(HSI/8)開,并做為當前的主時鐘源)
CLK_FLAG_CCOBSY 可配置的時鐘輸出忙,用于指示所選的CCO時鐘源正處于切換狀態(tài)
CLK_FLAG_CCORDY 可配置的時鐘輸出就緒,用于指示所選的CCO時鐘源正處穩(wěn)定狀態(tài)


返回值:
RESET 復位狀態(tài)。
SET 置位狀態(tài)。

//-----------------------------------------------------------------------------------------

ITStatus CLK_GetITStatus(CLK_IT_TypeDef CLK_IT);

獲得指定的時鐘中斷啟用狀態(tài)

參數(shù):
CLK_IT,時鐘中斷類型
可選值:
CLK_IT_CSSD 系統(tǒng)時鐘安全檢測標志
CLK_IT_SWIF 時鐘切換中斷標志

返回值:
RESET 復位狀態(tài)。
SET 置位狀態(tài)。

//-----------------------------------------------------------------------------------------

void CLK_ClearITPendingBit(CLK_IT_TypeDef CLK_IT);

清除時鐘中斷標志位

參數(shù):
CLK_IT,時鐘中斷標志
可選值:
CLK_IT_CSSD 系統(tǒng)時鐘安全檢測標志
CLK_IT_SWIF 時鐘切換中斷標志

返回值:無

//-----------------------------------------------------------------------------------------

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

ST公司的STM8AF5286是用于汽車的8位MCU,配置了多達128KB閃存,數(shù)據(jù)EEPROM,10位ADC,計時器,LIN,CAN,USART,SPI,I2C等接口,工作電壓3-5.5V,

關(guān)鍵字: st stm8

你知道STM8 Nucleo開發(fā)板嗎?意法半導體新推出的兩款STM8* Nucleo開發(fā)板,讓8位開發(fā)社區(qū)也能體驗到STM32 * Nucleo系列開發(fā)板久經(jīng)驗證的易用性和可擴展功能。

關(guān)鍵字: Nucleo stm8 意法

折騰了兩天了,一直沒解決問題。短路計算機這邊的串口收和發(fā),自收自發(fā)一切正常,這說明計算機這邊的串口沒問題。短路stm8s的收和發(fā),自收自發(fā)也正常,那就是stm8s這邊的串口也沒問題。懷疑是波特率誤差比

關(guān)鍵字: stm8 串口通信

前一段時間畫了一個CC1101收發(fā)小板子,但是一直沒有成功,最后發(fā)現(xiàn)把27nH的電感焊接成了27uH,最終導致失敗.現(xiàn)在更換之后可以覆蓋我們公司所有的角落,已經(jīng)夠用了.下面是STM8程序CC1101.

關(guān)鍵字: cc1101 stm8 433無線模塊

發(fā)布至今已十年,STM8將華麗轉(zhuǎn)身,延續(xù)傳奇。

關(guān)鍵字: 8位 MCU stm8 意法半導體 技術(shù)專訪

由于STM8L101屬于低功耗產(chǎn)品,所以設(shè)備剛上電時,其外設(shè)時鐘都是關(guān)閉的。因此,使用相應(yīng)外設(shè)時,需要先開啟相應(yīng)的外設(shè)時鐘.

關(guān)鍵字: stm8l101 時鐘管理

在使用MDK5編譯STM32時,新增的.c文件需要添加到 include Paths 處,否則編譯時會報錯。使用STM8時,用的是IAR,新增的.c文件需要添加頭文件路徑到 options->c/c++ Compi...

關(guān)鍵字: stm8 錯誤

在講PWM之前,大家先做以下5個實驗。1、LED1循環(huán)亮300ms,滅700ms;2、LED1循環(huán)亮30ms,滅70ms;3、LED1循環(huán)亮3ms,滅7ms;4、循環(huán)以下步驟1)LED1循環(huán)亮3ms,滅7ms;執(zhí)行一百次...

關(guān)鍵字: stm8 單片機 機器人

最近希望恢復性學習一下STM8的相關(guān)知識,于是我選擇了從頭開始寫溫濕度傳感器DHT11驅(qū)動代碼的方式。其中遇到一些問題,也有一些收獲,希望會幫助到遇到類似問題的朋友,也希望不足之處得到大家的指導 首先介紹一下

關(guān)鍵字: dht11 stm8 溫濕度傳感器
關(guān)閉