群辉nas怎么做网站,seol英文啥意思,办公室设计说明,济南网站开发企业本文主要记录了【沁恒蓝牙mesh】CH58x 如何将RTC时钟切换为外部时钟 #x1f496; 作者简介#xff1a;大家好#xff0c;我是喜欢记录零碎知识点的小菜鸟。#x1f60e;#x1f4dd; 个人主页#xff1a;欢迎访问我的 Ethernet_Comm 博客主页#x1f525;#x1f389;… 本文主要记录了【沁恒蓝牙mesh】CH58x 如何将RTC时钟切换为外部时钟 作者简介大家好我是喜欢记录零碎知识点的小菜鸟。 个人主页欢迎访问我的 Ethernet_Comm 博客主页 支持我点赞收藏⭐️留言 系列专栏沁恒蓝牙mesh二次开发 格言写文档啊不是写文章重要的还是直白
1. 硬件设计
·X32MO X32MI引脚外接32M时钟作为MCU系统运行的高速时钟PA11 PA10引脚外接 32.768K 时钟
关于 CH58X·时钟计算可参考我的博文 【沁恒蓝牙mesh】CH58x系统时钟配置与计算
2. 软件配置
软件默认使用的是 系统内部时钟
void HAL_TimeInit(void)
{
#if(CLK_OSC32K)sys_safe_access_enable();R8_CK32K_CONFIG ~(RB_CLK_OSC32K_XT | RB_CLK_XT32K_PON);sys_safe_access_enable();R8_CK32K_CONFIG | RB_CLK_INT32K_PON;sys_safe_access_disable();Lib_Calibration_LSI();
#elsesys_safe_access_enable();R8_CK32K_CONFIG | RB_CLK_OSC32K_XT | RB_CLK_INT32K_PON | RB_CLK_XT32K_PON;sys_safe_access_disable();
#endifRTC_InitTime(2020, 1, 1, 0, 0, 0); //RTC时钟初始化当前时间TMOS_TimerInit(0);
}3. 切换RTC时钟为LSE外部时钟
配置流程参考官方手册
// 首先不要将PA10 PA11引脚配置为输出
sys_safe_access_enable();
// 切换LSE 内部32K使能 开启外部晶振
R8_CK32K_CONFIG | RB_CLK_OSC32K_XT | RB_CLK_INT32K_PON | RB_CLK_XT32K_PON;
sys_safe_access_enable();
R16_CLK_SYS_CFG | RB_CLK_SYS_MOD; // 32k 作为 HCLK
sys_safe_access_disable();#include CH58x_common.hvoid DebugInit(void)
{GPIOA_SetBits(GPIO_Pin_9);GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);UART1_DefInit();
}
__HIGH_CODE
void test1(void){
//外部32K需要屏蔽PA10/PA11的IO翻转32K晶振引脚sys_safe_access_enable();R8_CK32K_CONFIG | RB_CLK_OSC32K_XT | RB_CLK_INT32K_PON | RB_CLK_XT32K_PON;sys_safe_access_enable();R16_CLK_SYS_CFG | RB_CLK_SYS_MOD;sys_safe_access_disable();
}__HIGH_CODE
int main()
{uint8_t i;SetSysClock(CLK_SOURCE_PLL_60MHz);GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA); //设置模式 输出GPIOB_SetBits(GPIO_Pin_4);//GPIOA_ModeCfg(GPIO_Pin_10 | GPIO_Pin_11, GPIO_ModeOut_PP_5mA); //设置模式 输出验证内部32k作为主频时外部32k是不工作的。//GPIOA_ResetBits(GPIO_Pin_10);//GPIOA_SetBits(GPIO_Pin_11);mDelaymS(3000); //等待60M稳定test1();while(1);
}
参考
CH573F 使用LSI时如何关闭外部晶振