STM32——MDK4与MDK5中设置系统各部分时钟对比

发布者:MagicalSerenade最新更新时间:2023-04-07 来源: zhihu关键字:STM32  MDK4  MDK5 手机看文章 扫描二维码
随时随地手机看文章

/*******************************************************************************

* 函数名 : RCC_Configuration

* 函数描述  : 在MDK4中设置系统各部分时钟

* 输入参数  : 无

* 输出结果  : 无

* 返回值    : 无

*******************************************************************************/

 

void RCC_Configuration(void)

{

/* 定义枚举类型变量 HSEStartUpStatus */

ErrorStatus HSEStartUpStatus;

  /* 复位系统时钟设置 */

  RCC_DeInit();

  /* 开启 HSE */

  RCC_HSEConfig(RCC_HSE_ON);

  /* 等待 HSE 起振并稳定 */

  HSEStartUpStatus = RCC_WaitForHSEStartUp();

/* 判断 HSE 起是否振成功,是则进入if()内部 */

  if(HSEStartUpStatus == SUCCESS)

  {

    /* 选择 HCLK(AHB)时钟源为SYSCLK 1分频 */

    RCC_HCLKConfig(RCC_SYSCLK_Div1); 

    /* 选择 PCLK2 时钟源为 HCLK(AHB)1分频 */

    RCC_PCLK2Config(RCC_HCLK_Div1); 

    /* 选择 PCLK1 时钟源为 HCLK(AHB)2分频 */

    RCC_PCLK1Config(RCC_HCLK_Div2);

    /* 设置 FLASH 延时周期数为2 */

    FLASH_SetLatency(FLASH_Latency_2);

    /* 使能 FLASH 预取缓存 */

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* 选择锁相环(PLL)时钟源为 HSE 1分频,倍频数为9,则PLL输出频率为 8MHz * 9 = 72MHz */

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    /* 使能 PLL */ 

    RCC_PLLCmd(ENABLE);

    /* 等待 PLL 输出稳定 */

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

    /* 选择 SYSCLK 时钟源为 PLL */

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* 等待 PLL 成为 SYSCLK 时钟源 */

    while(RCC_GetSYSCLKSource() != 0x08);

  }

 

  /* 使能各个用到的外设时钟 */

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | 

   RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOB, ENABLE);

}


/*******************************************************************************

* 函数名 : RCC_Configuration

* 函数描述  : 在MDK5中设置系统各部分时钟

* 输入参数  : 无

* 输出结果  : 无

* 返回值    : 无

*******************************************************************************/

 

void SystemClock_Config(void)

{

/* 定义枚举类型变量 HSEStartUpStatus */

ErrorStatus HSEStartUpStatus;

  /* 复位系统时钟设置 */

  HAL_RCC_DeInit();

  /* 开启 HSE */

  __HAL_RCC_HSE_CONFIG(RCC_HSE_ON);

  /* 等待 HSE 起振并稳定 */

  HSEStartUpStatus = RCC_WaitForHSEStartUp();

/* 判断 HSE 起是否振成功,是则进入if()内部 */

  if(HSEStartUpStatus == SUCCESS)

  {

    /* 选择 HCLK(AHB)时钟源为SYSCLK 1分频 */

    HAL_RCC_GetHCLKConfig(RCC_SYSCLK_DIV1); 

    /* 选择 PCLK2 时钟源为 HCLK(AHB)1分频 */

    HAL_RCC_GETPCLK2Config(RCC_HCLK_DIV1); 

    /* 选择 PCLK1 时钟源为 HCLK(AHB)2分频 */

    HAL_RCC_GETPCLK1Config(RCC_HCLK_DIV2);

    /* 设置 FLASH 延时周期数为2 */


关键字:STM32  MDK4  MDK5 引用地址:STM32——MDK4与MDK5中设置系统各部分时钟对比

上一篇:STM32——关于在K5中RCC的标志位
下一篇:STM32——MDK4与MDK5中对于数据类型的不同

推荐阅读最新更新时间:2024-11-16 21:31

STM32的优先级NVIC_PriorityGroupConfig的理解
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用M3定义8位STM32只使用4位 写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置; 此文思路:“中断优先级”思维导图-- 关键要点--- 结合图和要点相关程序应用例程讲解; 我们先来看ST公司的一张图: 我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 放大看;) 前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0 N
[单片机]
<font color='red'>STM32</font>的优先级NVIC_PriorityGroupConfig的理解
stm32的超频实验
从时钟树中可以看出外接晶振可以接4-16Mhz,经过PLL倍频,最高可以达到16倍晶振的频率。笔者自己是外接的8Mhz晶振,所以说理论上可以达到8*16=128Mhz的频率。 所用芯片:stm32f103 编译工具:keil5 时钟配置子函数如下: void HSE_Init(uint32_t RCC_PLLMul_x)//范围2-16 { ErrorStatus HSEStatus;//定义 //重置RCC,否则不会有效果 RCC_DeInit(); //打开HSE RCC_HSEConfig(RCC_HSE_ON); HSEStatus=RCC_WaitForHSEStartUp();
[单片机]
<font color='red'>stm32</font>的超频实验
STM32的中断使用介绍
一、前言 中断是什么?举个例子来说,当我们正在工作时,突然电话响了,这时你会把手里的工作先停下来,然后去接电话,当接完电话后,电话里的人安排你马上做一件事,这时你需要立刻去做这件事,当把这件事做完后你会继续之前被打断的工作,这个过程为一次中断。 在计算机科学中,中断指计算机CPU获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。中断能提高CPU的效率,同时能对突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的切换。 后续将从以下图1中所示
[单片机]
<font color='red'>STM32</font>的中断使用介绍
关于STM32的引脚重映射
前段时间在用TIM3输出两路PWM波,把我坑惨了,就是因为不懂重映象。特此记录一下。 先简介一下重映象。 STM32的引脚可设置为可设置为:普通IO功能、复用功能、重映射功能。普通IO功能、复用功能用得比较多,这里就不叙述了。重映射功能,用的场合相对而言要少点。因为实在用定时器时在用到重映象,所以以F103的TIM3输出PWM波为例。 这是TIM3的复用功能映象表,可以看到没有重映象时TIM3的四个通道所对应的引脚为PA6、PA7、PB0、PB1;使用部分重映象时为PB4、PB5、PB0、PB1,因为只改变了部分引脚,所以叫部分重映象;使用完全重映象时为PC6、PC7、PC8、PC9,这全部的引脚都改了,所以叫完全重映象
[单片机]
关于<font color='red'>STM32</font>的引脚重映射
STM32系列芯片串口烧写工具
官方的FlashLoader使用着太过麻烦,一步一步下去,而且还不是每次都能顺利通过, 最近自己写了一个STM32系列芯片的串口烧写工具, 只需点一次烧写按钮,剩下的自动完成, 运行环境:.NET4.0 1.可以烧写最多5个程序+1个自定义的hex数据; 2.可以读取芯片信息; 3.可以读取芯片内容; 4.烧写选项可选读写校验, 整片擦除, 使能读保护, 循环烧写(烧写完会继续进行下一次的烧写, 方便生产); 应用截图 : 目前主流的STM32系列芯片都支持, 在MAP目录下可自定义扩展芯片配置文件; 版本更新 1.0.6 1.修复F0芯片获取资料不准确的BUG; 2.烧写过程中读取校验失败再多读取校验
[单片机]
<font color='red'>STM32</font>系列芯片串口烧写工具
STM32中RCC时钟简介
LEGEND(说明) HSE = Hight-speed external clock singal HSI = Hight-speed internal clock singal LSI = Low-speed external clock singal LSE = Low-speed internal clock singal HSE 为外部高速外部晶振 (4~16M HSE OSC,推荐为 8 M 的OSC ) HSI 为高速内部晶振 (8 M 的HSE OSC) LSI 为低速内部晶振 (在30kHz和60kHz之间) -------LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机
[单片机]
STM32单片机的Usart2串口的调试方法
先是参考http://wenku.baidu.com/view/78f6b1350b4c2e3f572763e9.html调通了usart1 然后将程序进行修改,对Usart2进行配置,配置完了之后,程序还是没有正确,然后在voidGPIO_cfg();函数中添加一句 GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE); 最后程序如下, #include“stm32f10x_lib.h” FlagStatusRX_status; FlagStatusTx_status; voidRCC_cfg(void); voidGPIO_cfg(void); voidUSART_cfg(void);
[单片机]
<font color='red'>STM32</font>单片机的Usart2串口的调试方法
STM32同时开启两个定时器,其一个定时器不能设置断点的原因
最近在编写程序的时候发现stm32单片机的定时器不同的类型其配置是不一样的。 在编程的过程中开了两个定时器,结果在调试程序的时候发现TIM6中断程序不能设置断点,就说明这段程序可能没有被运行,后来我又换了TIM1也是一样不行。 查看数据手册如下: 从stm32f030c8t6的数据手册可以看出,定时器有三个类型,分别是高级定时器,通用定时器以及基本定时器,我猜想可能是定时器的类型不一样,因此配置上面也不一样,因此我选用了TIM14作为我第二个定时器,配置和TIM3一样,这一次就成功的可以设置断点了。事实证明我的猜想是对的。
[单片机]
<font color='red'>STM32</font>同时开启两个定时器,其一个定时器不能设置断点的原因
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved