CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開源指令集設計。 片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。 此系列具有1路USB2.0主機/設備接口、多通道12位ADC轉換模塊、多通道TouchKey、多組定時器、多路IIC/USART/SPI接口等豐富的外設資源。
本章教程為MCO時鐘輸出,主要通過CH32V103 PA8引腳對外提供時鐘,相當于一個有源晶振。
1、RCC簡介及相關函數介紹
RCC:復位與時鐘控制器(Reset Clock Controller)縮寫。 控制器根據電源區域的劃分以及應用中的外設功耗管理考慮,提供了不同的復位形式以及可配置的時鐘樹結構。 控制器提供了3種復位形式:電源復位、系統復位和后備區域復位。 三種不同的時鐘源可被用來驅動系統時鐘(SYSCLK),包括HSE振蕩器時鐘、HSI振蕩器時鐘、PLL時鐘。
MCO是microcontroller clock output的縮寫,是微控制器時鐘輸出引腳,在 CH32V103系列中由PA8復用所得,主要作用是可以對外提供時鐘,相當于一個有源晶振。 MCO的時鐘來源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具體選哪個由時鐘配置寄存器0的位 26-24:MCO[2:0]決定。 除了對外提供時鐘這個作用之外,我們還可以通過示波器監控MCO引腳的時鐘輸出來驗證我們的系統時鐘配置是否正確。
關于CH32V103 RCC具體信息,可參考CH32V103應用手冊。 CH32V103 RCC標準庫函數具體內容如下:
1.1、無效RCC_DeInit(無效)
功 能:將RCC時鐘配置重置為默認重置狀態。
輸 入:無
1.2、無效RCC_HSEConfig(uint32_t RCC_HSE)
功 能:配置外部高速振蕩器(HSE)。
輸 入:RCC_HSE:RCC_HSE_OFF:HSE振蕩器關閉。 RCC_HSE_ON:HSE振蕩器打開。 RCC_HSE_Bypass:外部時鐘繞過HSE振蕩器。
1.3、錯誤狀態RCC_WaitForHSEStartUp(無效)
功 能:等待HSE啟動。
輸 入:無
1.4、無效RCC_AdjustHSICalibrationValue(uint8_t HSIC校準值)
功 能:調整內部高速振蕩器(HSI)校準值。
輸 入:HSICalibrationValue:指定校準微調值。
1.5、無效RCC_HSICmd(功能狀態新狀態)
功 能:啟用或禁用內部高速振蕩器(HSI)。
輸 入:NewState:啟用或禁用。
1.6、無效RCC_PLLConfig(uint32_t RCC_PLLSource、uint32_t RCC_PLLMul)
功 能:配置PLL時鐘源和倍增因子。
輸 入:RCC_PLLSource:指定PLL入口時鐘源。 RCC_PLLMul:指定PLL乘法因子。
1.7、無效RCC_PLLCmd(功能狀態新狀態)
功 能:啟用或禁用PLL。
輸 入:NewState:啟用或禁用。
1.8、無效RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)
功 能:配置系統時鐘(SYSCLK)。
輸 入:RCC_SYSCLKSource:指定用作系統時鐘的時鐘源。
1.9、uint8_t RCC_GetSYSCLKSource(無效)
功 能:返回用作系統時鐘的時鐘源。
輸 入:無
1.10、無效RCC_HCLKConfig(uint32_t RCC_SYSCLK)
功 能:配置AHB時鐘(HCLK)。
輸 入:RCC_SYSCLK:定義AHB時鐘分頻器。 此時鐘源于系統時鐘(SYSCLK)。
1.11、無效RCC_PCLK1Config(uint32_t RCC_HCLK)
功 能:配置低速APB時鐘(PCLK1)。
輸 入:RCC_HCLK:定義APB1時鐘分頻器。 該時鐘源于AHB時鐘(HCLK)。
1.12、無效RCC_ITConfig(uint8_t RCC_IT,功能狀態新狀態)
功 能:啟用或禁用指定的RCC中斷。
輸 入:NewState:啟用或禁用。
1.13、無效RCC_USBCLKConfig(uint32_t RCC_USBCLKSource)
功 能:配置USB時鐘(USBCLK)。
輸 入:RCC_USBCLKSource:指定USB時鐘源。該時鐘源于鎖相環輸出。
1.14、void RCC_ADCCLKConfig(uint32_t RCC_PCLK2)
功 能:配置ADC時鐘(ADCCLK)。
輸 入:RCC_PCLK2:定義ADC時鐘分頻器。該時鐘源于APB2時鐘(PCLK2)。
1.15、void RCC_LSEConfig(uint8_t RCC_LSE)
功 能:配置外部低速振蕩器(LSE)。
輸 入:RCC_LSE:指定LSE的新狀態。
1.16、void RCC_LSICmd(FunctionalState NewState)
功 能:啟用或禁用內部低速振蕩器(LSI)。
輸 入:NewState:啟用或禁用。
1.17、void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource)
功 能:一旦選擇了RTC時鐘,除非重置備份域,否則無法更改。
輸 入:RCC_RTCCLKSource:指定RTC時鐘源。
1.18、void RCC_RTCCLKCmd(FunctionalState NewState)
功 能:只有在使用RCC_RTCCLKConfig函數選擇了RTC時鐘之后,才能使用此函數。
輸 入:NewState:啟用或禁用。
1.19、void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
功 能:返回不同片內時鐘的頻率。
輸 入:RCC_Clocks:指向將保存時鐘頻率的RCC_ClocksTypeDef結構的指針。
1.20、void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
功 能:啟用或禁用AHB外圍時鐘。
輸 入:RCC_AHBPeriph:指定AHB外圍設備以關閉其時鐘。NewState:啟用或禁用。
1.21、void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
功 能:啟用或禁用高速APB(APB2)外圍時鐘。
輸 入:RCC_APB2Periph:指定APB2外圍設備來關閉其時鐘。NewState:啟用或禁用。
1.22、void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
功 能:強制或解除高速APB(APB2)外圍設備復位。
輸 入:RCC_APB2Periph:指定要重置的APB2外圍設備。NewState:啟用或禁用。
1.23、void RCC_BackupResetCmd(FunctionalState NewState)
功 能:強制或釋放備份域重置。
輸 入:NewState:啟用或禁用。
1.24、void RCC_ClockSecuritySystemCmd(FunctionalState NewState)
功 能:啟用或禁用時鐘安全系統。
輸 入:NewState:啟用或禁用。
1.25、void RCC_MCOConfig(uint8_t RCC_MCO)
功 能:選擇要在MCO引腳上輸出的時鐘源。
輸 入:RCC_MCO:指定要輸出的時鐘源。
1.26、FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG)
功 能:檢查是否設置了指定的RCC標志。
輸 入:RCC_FLAG:指定要檢查的標志。
1.27、void RCC_ClearFlag(void)
功 能:清除RCC重置標志。
輸 入:無
1.28、ITStatus RCC_GetITStatus(uint8_t RCC_IT)
功 能:檢查指定的RCC中斷是否發生。
輸 入:RCC_IT:指定要檢查的RCC中斷源。
1.29、void RCC_ClearITPendingBit(uint8_t RCC_IT)
功 能:清除RCC的中斷掛起位。
輸 入:RCC_IT:指定要清除的中斷掛起位。
以上函數在程序中直接調用即可。
2、硬件設計
RCC為單片機內部資源,無需進行硬件連接。
3、軟件設計
本章教程將PA8復用為MCO引腳對外提供時鐘輸出,并通過示波器驗證系統始終是否正確。其具體程序如下:
4、下載驗證
將編譯好的程序下載到開發板并復位,利用示波器檢測MCO引腳PA8時鐘輸出頻率
-
單片機
+關注
關注
6067文章
44989瀏覽量
650366 -
mcu
+關注
關注
146文章
17979瀏覽量
366728 -
RCC
+關注
關注
0文章
95瀏覽量
27595 -
RISC-V
+關注
關注
46文章
2563瀏覽量
48799 -
CH32V103
+關注
關注
1文章
13瀏覽量
1238 -
ch32
+關注
關注
0文章
73瀏覽量
901
發布評論請先 登錄
CH32V103基礎教程8-PWM輸出
CH32V103基礎教程9-輸入捕獲
CH32V103基礎教程77-USART-指令控制LED燈
CH32V103基礎教程78-USART-空閑中斷
CH32V103基礎教程81-中斷嵌套
CH32V103基礎教程95-PWM驅動蜂鳴器
CH32V103基礎教程98-RTC-脈沖
RISC-V MCU應用開發教程之CH32V103

評論