CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開(kāi)源指令集設(shè)計(jì)。 片上集成了時(shí)鐘安全機(jī)制、多級(jí)電源管理、通用DMA控制器。 此系列具有1路USB2.0主機(jī)/設(shè)備接口、多通道12位ADC轉(zhuǎn)換模塊、多通道TouchKey、多組定時(shí)器、多路IIC/USART/SPI接口等豐富的外設(shè)資源。
本章教程為MCO時(shí)鐘輸出,主要通過(guò)CH32V103 PA8引腳對(duì)外提供時(shí)鐘,相當(dāng)于一個(gè)有源晶振。
1、RCC簡(jiǎn)介及相關(guān)函數(shù)介紹
RCC:復(fù)位與時(shí)鐘控制器(Reset Clock Controller)縮寫。 控制器根據(jù)電源區(qū)域的劃分以及應(yīng)用中的外設(shè)功耗管理考慮,提供了不同的復(fù)位形式以及可配置的時(shí)鐘樹結(jié)構(gòu)。 控制器提供了3種復(fù)位形式:電源復(fù)位、系統(tǒng)復(fù)位和后備區(qū)域復(fù)位。 三種不同的時(shí)鐘源可被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘(SYSCLK),包括HSE振蕩器時(shí)鐘、HSI振蕩器時(shí)鐘、PLL時(shí)鐘。
MCO是microcontroller clock output的縮寫,是微控制器時(shí)鐘輸出引腳,在 CH32V103系列中由PA8復(fù)用所得,主要作用是可以對(duì)外提供時(shí)鐘,相當(dāng)于一個(gè)有源晶振。 MCO的時(shí)鐘來(lái)源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具體選哪個(gè)由時(shí)鐘配置寄存器0的位 26-24:MCO[2:0]決定。 除了對(duì)外提供時(shí)鐘這個(gè)作用之外,我們還可以通過(guò)示波器監(jiān)控MCO引腳的時(shí)鐘輸出來(lái)驗(yàn)證我們的系統(tǒng)時(shí)鐘配置是否正確。
關(guān)于CH32V103 RCC具體信息,可參考CH32V103應(yīng)用手冊(cè)。 CH32V103 RCC標(biāo)準(zhǔn)庫(kù)函數(shù)具體內(nèi)容如下:
1.1、無(wú)效RCC_DeInit(無(wú)效)
功 能:將RCC時(shí)鐘配置重置為默認(rèn)重置狀態(tài)。
輸 入:無(wú)
1.2、無(wú)效RCC_HSEConfig(uint32_t RCC_HSE)
功 能:配置外部高速振蕩器(HSE)。
輸 入:RCC_HSE:RCC_HSE_OFF:HSE振蕩器關(guān)閉。 RCC_HSE_ON:HSE振蕩器打開(kāi)。 RCC_HSE_Bypass:外部時(shí)鐘繞過(guò)HSE振蕩器。
1.3、錯(cuò)誤狀態(tài)RCC_WaitForHSEStartUp(無(wú)效)
功 能:等待HSE啟動(dòng)。
輸 入:無(wú)
1.4、無(wú)效RCC_AdjustHSICalibrationValue(uint8_t HSIC校準(zhǔn)值)
功 能:調(diào)整內(nèi)部高速振蕩器(HSI)校準(zhǔn)值。
輸 入:HSICalibrationValue:指定校準(zhǔn)微調(diào)值。
1.5、無(wú)效RCC_HSICmd(功能狀態(tài)新?tīng)顟B(tài))
功 能:?jiǎn)⒂没蚪脙?nèi)部高速振蕩器(HSI)。
輸 入:NewState:啟用或禁用。
1.6、無(wú)效RCC_PLLConfig(uint32_t RCC_PLLSource、uint32_t RCC_PLLMul)
功 能:配置PLL時(shí)鐘源和倍增因子。
輸 入:RCC_PLLSource:指定PLL入口時(shí)鐘源。 RCC_PLLMul:指定PLL乘法因子。
1.7、無(wú)效RCC_PLLCmd(功能狀態(tài)新?tīng)顟B(tài))
功 能:?jiǎn)⒂没蚪肞LL。
輸 入:NewState:啟用或禁用。
1.8、無(wú)效RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)
功 能:配置系統(tǒng)時(shí)鐘(SYSCLK)。
輸 入:RCC_SYSCLKSource:指定用作系統(tǒng)時(shí)鐘的時(shí)鐘源。
1.9、uint8_t RCC_GetSYSCLKSource(無(wú)效)
功 能:返回用作系統(tǒng)時(shí)鐘的時(shí)鐘源。
輸 入:無(wú)
1.10、無(wú)效RCC_HCLKConfig(uint32_t RCC_SYSCLK)
功 能:配置AHB時(shí)鐘(HCLK)。
輸 入:RCC_SYSCLK:定義AHB時(shí)鐘分頻器。 此時(shí)鐘源于系統(tǒng)時(shí)鐘(SYSCLK)。
1.11、無(wú)效RCC_PCLK1Config(uint32_t RCC_HCLK)
功 能:配置低速APB時(shí)鐘(PCLK1)。
輸 入:RCC_HCLK:定義APB1時(shí)鐘分頻器。 該時(shí)鐘源于AHB時(shí)鐘(HCLK)。
1.12、無(wú)效RCC_ITConfig(uint8_t RCC_IT,功能狀態(tài)新?tīng)顟B(tài))
功 能:?jiǎn)⒂没蚪弥付ǖ腞CC中斷。
輸 入:NewState:啟用或禁用。
1.13、無(wú)效RCC_USBCLKConfig(uint32_t RCC_USBCLKSource)
功 能:配置USB時(shí)鐘(USBCLK)。
輸 入:RCC_USBCLKSource:指定USB時(shí)鐘源。該時(shí)鐘源于鎖相環(huán)輸出。
1.14、void RCC_ADCCLKConfig(uint32_t RCC_PCLK2)
功 能:配置ADC時(shí)鐘(ADCCLK)。
輸 入:RCC_PCLK2:定義ADC時(shí)鐘分頻器。該時(shí)鐘源于APB2時(shí)鐘(PCLK2)。
1.15、void RCC_LSEConfig(uint8_t RCC_LSE)
功 能:配置外部低速振蕩器(LSE)。
輸 入:RCC_LSE:指定LSE的新?tīng)顟B(tài)。
1.16、void RCC_LSICmd(FunctionalState NewState)
功 能:?jiǎn)⒂没蚪脙?nèi)部低速振蕩器(LSI)。
輸 入:NewState:啟用或禁用。
1.17、void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource)
功 能:一旦選擇了RTC時(shí)鐘,除非重置備份域,否則無(wú)法更改。
輸 入:RCC_RTCCLKSource:指定RTC時(shí)鐘源。
1.18、void RCC_RTCCLKCmd(FunctionalState NewState)
功 能:只有在使用RCC_RTCCLKConfig函數(shù)選擇了RTC時(shí)鐘之后,才能使用此函數(shù)。
輸 入:NewState:啟用或禁用。
1.19、void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
功 能:返回不同片內(nèi)時(shí)鐘的頻率。
輸 入:RCC_Clocks:指向?qū)⒈4鏁r(shí)鐘頻率的RCC_ClocksTypeDef結(jié)構(gòu)的指針。
1.20、void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪肁HB外圍時(shí)鐘。
輸 入:RCC_AHBPeriph:指定AHB外圍設(shè)備以關(guān)閉其時(shí)鐘。NewState:啟用或禁用。
1.21、void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪酶咚貯PB(APB2)外圍時(shí)鐘。
輸 入:RCC_APB2Periph:指定APB2外圍設(shè)備來(lái)關(guān)閉其時(shí)鐘。NewState:啟用或禁用。
1.22、void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
功 能:強(qiáng)制或解除高速APB(APB2)外圍設(shè)備復(fù)位。
輸 入:RCC_APB2Periph:指定要重置的APB2外圍設(shè)備。NewState:啟用或禁用。
1.23、void RCC_BackupResetCmd(FunctionalState NewState)
功 能:強(qiáng)制或釋放備份域重置。
輸 入:NewState:啟用或禁用。
1.24、void RCC_ClockSecuritySystemCmd(FunctionalState NewState)
功 能:?jiǎn)⒂没蚪脮r(shí)鐘安全系統(tǒng)。
輸 入:NewState:啟用或禁用。
1.25、void RCC_MCOConfig(uint8_t RCC_MCO)
功 能:選擇要在MCO引腳上輸出的時(shí)鐘源。
輸 入:RCC_MCO:指定要輸出的時(shí)鐘源。
1.26、FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG)
功 能:檢查是否設(shè)置了指定的RCC標(biāo)志。
輸 入:RCC_FLAG:指定要檢查的標(biāo)志。
1.27、void RCC_ClearFlag(void)
功 能:清除RCC重置標(biāo)志。
輸 入:無(wú)
1.28、ITStatus RCC_GetITStatus(uint8_t RCC_IT)
功 能:檢查指定的RCC中斷是否發(fā)生。
輸 入:RCC_IT:指定要檢查的RCC中斷源。
1.29、void RCC_ClearITPendingBit(uint8_t RCC_IT)
功 能:清除RCC的中斷掛起位。
輸 入:RCC_IT:指定要清除的中斷掛起位。
以上函數(shù)在程序中直接調(diào)用即可。
2、硬件設(shè)計(jì)
RCC為單片機(jī)內(nèi)部資源,無(wú)需進(jìn)行硬件連接。
3、軟件設(shè)計(jì)
本章教程將PA8復(fù)用為MCO引腳對(duì)外提供時(shí)鐘輸出,并通過(guò)示波器驗(yàn)證系統(tǒng)始終是否正確。其具體程序如下:
4、下載驗(yàn)證
將編譯好的程序下載到開(kāi)發(fā)板并復(fù)位,利用示波器檢測(cè)MCO引腳PA8時(shí)鐘輸出頻率
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44621瀏覽量
638614 -
mcu
+關(guān)注
關(guān)注
146文章
17324瀏覽量
352658 -
RCC
+關(guān)注
關(guān)注
0文章
93瀏覽量
27063 -
RISC-V
+關(guān)注
關(guān)注
45文章
2324瀏覽量
46600 -
CH32V103
+關(guān)注
關(guān)注
1文章
13瀏覽量
1049 -
ch32
+關(guān)注
關(guān)注
0文章
73瀏覽量
699
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論