/********************************** (C) COPYRIGHT *******************************
* File Name : system_ch32v30x.c
* Author : WCH
* Version : V1.0.0
* Date : 2021/06/06
* Description : CH32V30x Device Peripheral Access Layer System Source File.
* For HSE = 8Mhz
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#include "ch32v30x.h"
/*
* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after
* reset the HSI is used as SYSCLK source).
* If none of the define below is enabled, the HSI is used as System clock source.
*/
//#define SYSCLK_FREQ_HSE HSE_VALUE
//#define SYSCLK_FREQ_48MHz_HSE 48000000
//#define SYSCLK_FREQ_56MHz_HSE 56000000
//#define SYSCLK_FREQ_72MHz_HSE 72000000
#define SYSCLK_FREQ_96MHz_HSE 96000000
//#define SYSCLK_FREQ_120MHz_HSE 120000000
//#define SYSCLK_FREQ_144MHz_HSE 144000000
//#define SYSCLK_FREQ_HSI HSI_VALUE
//#define SYSCLK_FREQ_48MHz_HSI 48000000
//#define SYSCLK_FREQ_56MHz_HSI 56000000
//#define SYSCLK_FREQ_72MHz_HSI 72000000
//#define SYSCLK_FREQ_96MHz_HSI 96000000
//#define SYSCLK_FREQ_120MHz_HSI 120000000
//#define SYSCLK_FREQ_144MHz_HSI 144000000
/* Clock Definitions */
#ifdef SYSCLK_FREQ_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_48MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_56MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_72MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_96MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_120MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_144MHz_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSE; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_48MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz_HSI; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_56MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz_HSI; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_72MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz_HSI; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_96MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz_HSI; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_120MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz_HSI; /* System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_144MHz_HSI
uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz_HSI; /* System Clock Frequency (Core Clock) */
#else
uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */
#endif
__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
/* system_private_function_proto_types */
static void SetSysClock(void);
#ifdef SYSCLK_FREQ_HSE
static void SetSysClockToHSE( void );
#elif defined SYSCLK_FREQ_48MHz_HSE
static void SetSysClockTo48_HSE( void );
#elif defined SYSCLK_FREQ_56MHz_HSE
static void SetSysClockTo56_HSE( void );
#elif defined SYSCLK_FREQ_72MHz_HSE
static void SetSysClockTo72_HSE( void );
#elif defined SYSCLK_FREQ_96MHz_HSE
static void SetSysClockTo96_HSE( void );
#elif defined SYSCLK_FREQ_120MHz_HSE
static void SetSysClockTo120_HSE( void );
#elif defined SYSCLK_FREQ_144MHz_HSE
static void SetSysClockTo144_HSE( void );
#elif defined SYSCLK_FREQ_48MHz_HSI
static void SetSysClockTo48_HSI( void );
#elif defined SYSCLK_FREQ_56MHz_HSI
static void SetSysClockTo56_HSI( void );
#elif defined SYSCLK_FREQ_72MHz_HSI
static void SetSysClockTo72_HSI( void );
#elif defined SYSCLK_FREQ_96MHz_HSI
static void SetSysClockTo96_HSI( void );
#elif defined SYSCLK_FREQ_120MHz_HSI
static void SetSysClockTo120_HSI( void );
#elif defined SYSCLK_FREQ_144MHz_HSI
static void SetSysClockTo144_HSI( void );
#endif
/*********************************************************************
* @fn SystemInit
*
* @brief Setup the microcontroller system Initialize the Embedded Flash Interface,
* the PLL and update the SystemCoreClock variable.
*
* @return none
*/
void SystemInit (void)
{
RCC->CTLR |= (uint32_t)0x00000001;
#ifdef CH32V30x_D8C
RCC->CFGR0 &= (uint32_t)0xF8FF0000;
#else
RCC->CFGR0 &= (uint32_t)0xF0FF0000;
#endif
RCC->CTLR &= (uint32_t)0xFEF6FFFF;
RCC->CTLR &= (uint32_t)0xFFFBFFFF;
RCC->CFGR0 &= (uint32_t)0xFF80FFFF;
#ifdef CH32V30x_D8C
RCC->CTLR &= (uint32_t)0xEBFFFFFF;
RCC->INTR = 0x00FF0000;
RCC->CFGR2 = 0x00000000;
#else
RCC->INTR = 0x009F0000;
#endif
SetSysClock();
}
/*********************************************************************
* @fn SystemCoreClockUpdate
*
* @brief Update SystemCoreClock variable according to Clock Register Values.
*
* @return none
*/
void SystemCoreClockUpdate (void)
{
uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0;
tmp = RCC->CFGR0 & RCC_SWS;
switch (tmp)
{
case 0x00:
SystemCoreClock = HSI_VALUE;
break;
case 0x04:
SystemCoreClock = HSE_VALUE;
break;
case 0x08:
pllmull = RCC->CFGR0 & RCC_PLLMULL;
pllsource = RCC->CFGR0 & RCC_PLLSRC;
pllmull = ( pllmull >> 18) + 2;
#ifdef CH32V30x_D8
if(pllmull == 17) pllmull = 18;
#else
if(pllmull == 2) pllmull = 18;
if(pllmull == 15){
pllmull = 13; /* *6.5 */
Pll_6_5 = 1;
}
if(pllmull == 16) pllmull = 15;
if(pllmull == 17) pllmull = 16;
#endif
if (pllsource == 0x00)
{
if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE){
SystemCoreClock = (HSI_VALUE) * pllmull;
}
else{
SystemCoreClock = (HSI_VALUE >>1) * pllmull;
}
}
else
{
if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET)
{
SystemCoreClock = (HSE_VALUE >> 1) * pllmull;
}
else
{
SystemCoreClock = HSE_VALUE * pllmull;
}
}
if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2);
break;
default:
SystemCoreClock = HSI_VALUE;
break;
}
tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)];
SystemCoreClock >>= tmp;
}
/*********************************************************************
* @fn SetSysClock
*
* @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers.
*
* @return none
*/
static void SetSysClock(void)
{
#ifdef SYSCLK_FREQ_HSE
SetSysClockToHSE();
#elif defined SYSCLK_FREQ_48MHz_HSE
SetSysClockTo48_HSE();
#elif defined SYSCLK_FREQ_56MHz_HSE
SetSysClockTo56_HSE();
#elif defined SYSCLK_FREQ_72MHz_HSE
SetSysClockTo72_HSE();
#elif defined SYSCLK_FREQ_96MHz_HSE
SetSysClockTo96_HSE();
#elif defined SYSCLK_FREQ_120MHz_HSE
SetSysClockTo120_HSE();
#elif defined SYSCLK_FREQ_144MHz_HSE
SetSysClockTo144_HSE();
#elif de
没有合适的资源?快使用搜索试试~ 我知道了~
基于CH32V307VCT6单片机啊里云和蓝牙的数据传输代码
共109个文件
o:37个
d:37个
h:9个
需积分: 0 6 下载量 151 浏览量
2023-12-11
09:33:47
上传
评论 1
收藏 591KB RAR 举报
温馨提示
本系统以CH32V307VCT6单片机为控制核心,通过蓝牙模块把DHT11模块的温湿度、超声波模块的测距实时显示在自主开发的蓝牙APP上,通过AIR700E的4G模块把DHT11模块的温湿度、超声波模块的测距实时显示在啊里云平台上,同时在把DHT11模块的温湿度、超声波模块的测距实时显示在OLED屏上。 int main(void) { char str1[250]; char str2[250]; char str3[250]; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate();// ʱ Delay_Init(); USART2_Configuration();//USART2 USART3_Configuration();//USART3 //建立连接 Serial_SendString3("AT+MCONFIG=\"k0d4gGK3Niz.2000914ABCD|securemod
资源推荐
资源详情
资源评论
收起资源包目录
基于CH32V307VCT6单片机啊里云和蓝牙的数据传输代码 (109个子文件)
system_ch32v30x.c 29KB
main.c 13KB
ssd1306.c 11KB
timer.c 4KB
DHT11.c 3KB
IIC.c 2KB
ch32v30x_it.c 1KB
gpio.c 752B
.cproject 24KB
ch32v30x_opa.d 5KB
ch32v30x_dvp.d 5KB
ch32v30x_eth.d 5KB
ch32v30x_rng.d 5KB
main.d 5KB
debug.d 5KB
ssd1306.d 5KB
ch32v30x_dbgmcu.d 5KB
ch32v30x_usart.d 5KB
ch32v30x_flash.d 5KB
ch32v30x_wwdg.d 5KB
ch32v30x_sdio.d 5KB
ch32v30x_gpio.d 5KB
ch32v30x_misc.d 5KB
ch32v30x_iwdg.d 5KB
ch32v30x_fsmc.d 5KB
ch32v30x_exti.d 5KB
ch32v30x_spi.d 5KB
ch32v30x_bkp.d 5KB
ch32v30x_rtc.d 5KB
ch32v30x_crc.d 5KB
ch32v30x_tim.d 5KB
ch32v30x_rcc.d 5KB
ch32v30x_i2c.d 5KB
ch32v30x_can.d 5KB
ch32v30x_pwr.d 5KB
ch32v30x_adc.d 5KB
ch32v30x_dac.d 5KB
ch32v30x_dma.d 5KB
ch32v30x_it.d 5KB
DHT11.d 5KB
gpio.d 5KB
system_ch32v30x.d 5KB
IIC.d 5KB
timer.d 5KB
startup_ch32v30x_D8C.d 123B
core_riscv.d 97B
USART_MultiProcessorCommunication.elf 226KB
oledfont.h 47KB
ch32v30x_conf.h 1KB
ssd1306.h 1KB
system_ch32v30x.h 1KB
ch32v30x_it.h 757B
DHT11.h 679B
gpio.h 420B
timer.h 335B
IIC.h 193B
USART_MultiProcessorCommunication.hex 75KB
USART_MultiProcessorCommunication.lst 383KB
makefile 3KB
USART_MultiProcessorCommunication.map 211KB
subdir.mk 22KB
subdir.mk 1KB
subdir.mk 1KB
subdir.mk 1KB
subdir.mk 1KB
sources.mk 610B
objects.mk 249B
ch32v30x_tim.o 174KB
ch32v30x_eth.o 168KB
ch32v30x_rcc.o 89KB
ch32v30x_can.o 84KB
ssd1306.o 83KB
ch32v30x_adc.o 82KB
ch32v30x_flash.o 82KB
main.o 71KB
ch32v30x_i2c.o 64KB
ch32v30x_usart.o 62KB
ch32v30x_spi.o 51KB
ch32v30x_gpio.o 49KB
ch32v30x_sdio.o 46KB
ch32v30x_fsmc.o 45KB
ch32v30x_pwr.o 37KB
timer.o 37KB
ch32v30x_dma.o 33KB
ch32v30x_rtc.o 32KB
ch32v30x_dac.o 31KB
ch32v30x_bkp.o 31KB
DHT11.o 30KB
debug.o 29KB
ch32v30x_misc.o 26KB
system_ch32v30x.o 24KB
ch32v30x_exti.o 23KB
core_riscv.o 20KB
ch32v30x_wwdg.o 20KB
IIC.o 20KB
ch32v30x_rng.o 19KB
ch32v30x_dvp.o 18KB
startup_ch32v30x_D8C.o 18KB
ch32v30x_opa.o 18KB
ch32v30x_crc.o 17KB
共 109 条
- 1
- 2
资源评论
独影残缺
- 粉丝: 126
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功