完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由cubmx生成的STM32F1工程的内部时钟和外部时钟定义在stm32f1xx_hal_config.h中的
#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)16000000) /*!《 Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ #if !defined (HSI_VALUE) #define HSI_VALUE ((uint32_t)8000000) /*!《 Value of the Internal oscillator in Hz*/ #endif /* HSI_VALUE */ SystemClock_Config(); /* 结构体初始化 */ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; /* RCC_OSCILLATORTYPE_HSI; //时钟源为HSI内部高速时钟 //RCC_OSCILLATORTYPE_HSE 高速外部时钟 */ RCC_OscInitStruct.HSEState = RCC_HSE_ON;/* 打开HES */ RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV2;/* */ RCC_OscInitStruct.HSIState = RCC_HSI_ON;/* 打开HSI */ RCC_OscInitStruct.LSIState = RCC_LSI_ON;/* 打开LSI */ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;/* 打开PLL */ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;/* 设置PLL时钟源 */ RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;/* PLL VCO输入时钟的倍频系数 */ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)/* 初始化 */ { Error_Handler(); } /** Initializes the CPU, AHB and APB busses clocks */ /* 选中PLL作为系统时钟源并且配置HCLK,PCLK1和PCLK2 */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; /* 设置系统时钟源 */ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; /* AHB分频系数 */ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; /* APB1分频系数 */ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; /* APB2分频系数 */ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; /* 初始化并同时设置FLASH 的延迟周期 */ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } 1、LSI RC,低速内部时钟(RC振荡器),是看门狗(WatchdogLS)的唯一时钟来源,可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。 2、LSE OSC,外部低速时钟(晶振),输入输出引脚接OSC32_IN、OCS32_OUT可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。精度高于内部低速时钟。 3、MSI RC,全称为Multispeedinternal RC oscillator,是stm32lxx低功耗系列独有的时钟,可提供12种频率的时钟源,范围可以从100KHZ到48MHZ之间变化。可以直接选择为系统时钟和AHB时钟,也可以作为MCO的时钟源。MSI为低功耗模式提供了更多的选择,但是精度不高。官方提供的例程中多以MSI作为时钟源。 4、HSI,内部高速时钟(RC振荡器),可以直接选择为系统时钟,可以作为PLL(锁相环倍频输出)时钟源,经倍频后选择作为系统的System Clock(系统时钟)和AHB时钟。HSI还可以作为ADCCLK时钟源。 5、HSE,外部高速时钟(晶振),输入输出引脚接OSC_IN、OCS_OUT,可以直接选择为系统时钟,可以作为PLL源,经倍频后选择作为系统的(系统时钟)和AHB时钟。还可以作为MCO和RTC时钟源。 6、System Clock,系统时钟,是供STM32 中绝大部分部件工作的时钟源,是其他所有外设的时钟的来源。System Clock通过 AHB 分频器分频后送给各模块使用。System Clock还是CK_PWR和MCO的时钟源。 7、HCLK,高速外设时钟,是AHB总线时钟源,SystemClock经AHB预分频得到。供内存和 DMA 等使用。 8、FCLK为自由振荡处理器时钟,用来保证在休眠是采样到中断和跟踪休眠事件,与HCLK时钟源相同。 9、PCLK1,System Clock经AHB预分频后,送给 APB1 分频器,得出PCLK1,是APB1时钟源,供 APB1 外设使用。APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等。另一路送给TIMx使用,若APB1分频系数为1,则不倍频,否则倍频系数为2。 10、PCLK2,System Clock经AHB预分频后,送给 APB2 分频器,得出PCLK2,是APB2时钟源,供 APB2外设使用,APB2 上面连接的是高速外设包括UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。另一路送给TIMx使用,若APB2分频系数为1,则不倍频,否则倍频系数为2。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:06 , Processed in 1.123626 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号