STM32配置时钟时注意设置FLASH等待周期

发布者:AngelicGrace最新更新时间:2016-10-10 来源: eefocus关键字:STM32  配置时钟  FLASH  等待周期 手机看文章 扫描二维码
随时随地手机看文章
        兴致勃勃地把复位及时钟控制(RCC)的寄存器定义写完了,没得午觉睡倒算了,还累得满头大汗……看来这事有点吃力不讨好,真想用别人现成的头文件算了,最后还是咬咬牙自己写吧,至少可以让自己对寄存器结构熟悉一些。
        傍晚回来再写个测试程序,满以为一次就OK的,可是调试时却发现,运行到选择PLL时钟后程序就跑飞……顿时就傻眼了……检查各个寄存器配置,似乎没什么问题啊:选择外部8M时钟,不分频输入到PLL,设置PLL为9倍频(注意实际写入到寄存器中为7),AHB、ABP2不分频,ABP1为2分频(注意设置为8才是2分频),都没有超过最大频率啊。看来想要搞个72M的主频遇到麻烦了……试着将倍频降下来,当主频为48M时,系统可以正常工作了,莫非是USB模块的时钟没有设置为1.5分频?再检查,没错啊,是1.5分频的。找不到原因,额头上开始冒出了豆大的汗珠,还好今天天气热,被掩饰过去了,不然让那些行家看到笑死...莫非俺的片子是被人打磨过的...
       最后去论坛问了下,斑竹提示说是否忘记了设置FLASH等待周期?哈哈,好象我的程序是没有这个步骤,因为手册里没有关于FLASH的寄存器描述,所以把它给忽略了...不过里面也有提到系统时钟不同时,需要设置不同的等待周期,24M以下使用0等待,24M~48M使用1等待,48M~72M使用2等待。找到FALSH的手册,看了下上电复位后的等待设置为0,晕,72M主频不跑飞才怪了。在配置时钟之前,增加了一句FLASH_ACR=0x32,将等待周期设置为2,再次运行程序,流水灯流了起来~~~
       根据圈圈以往的经验,通常像访问存储器的相关寄存器,复位后都会设置为最坏条件下的值(例如等待周期设置为最大),然后再由用户自己配置以达到最佳性能。不过,STM32这个是内部的FLASH,上电复位后系统将自动使用内部8M时钟做为系统时钟,因而设置为0等待是没问题的。
关键字:STM32  配置时钟  FLASH  等待周期 引用地址:STM32配置时钟时注意设置FLASH等待周期

上一篇:STM32初学笔记1之RCC(下)
下一篇:STM32串口发送数据详解

推荐阅读最新更新时间:2024-03-16 15:14

stm32 GPIO口配置操作
stm32里面最基本的思路就是使用外设相应寄存器之前,必须开启控制对应寄存器的时钟,读者可到技术手册中查询相应的时钟控制的相应的寄存器。 这里首先开启stm32普通io口的时钟。 GPIO 作为通用输入输出口使用时,当有外部中断设置时才需要开启AFIO时钟,否则不需要开启AFIO 时钟。 然后就是进行gpio结构体的初始化设置 GPIO 常用设置里包括三个结构体的使用如下: 1、GPIO_InitTypeDef为GPIO的基本参数设置结构体,其中GPIO_Pin表示引脚号,GPIO_Speed表示引脚的速度,GPIO_Mode表示引脚的输入输出模式选择。通过这三个基本设置实现了
[单片机]
关于使用STM32 SPI3的一些总结
总结一下spi3的问题,因为spi3的nss口与JTAG有共用引脚,所以配置错误会导致SPI3无法使用。需要注意以下三点就可以了:  1.将PA15配置为普通IO口,GPIO_Mode_Out_PP  2.开启AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  3.关闭JTAG功能,使能SWD  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE) ; 其他的SPI口正常配置,因为板子重启后默认为JTAG模式,虽然在调试时使用了SWD,但PA15依然不是普通的IO口,当把它重新配置时,一定要开启AFIO时钟,
[单片机]
STVP中optionbyte页的ROP影响FLASH
近日调试中发现,STM8系列开发工具中的脱机下载软件,在OPTIONBYTE页上,有一个读写保护的选项ROP,这里可以选择为使能和禁用。。。 如果该选项选择为ON时,即读写保护,不管下一次你是用STVP来下载程序,还是用STDP开发环境用源码来下载程序,都会先清除单片机内的FLASH。 请特别小心。。。不注意此细节,批量时累死你。。 下图就是STVP中的ROP选项 当脱机下载程序如上图设置时,如果程序有修改,用STDP调试下载的时候,会出现如下的对话框 把上图中的ROP给禁用了就能够下载程序了,要注意,这时FLASH将会被擦除。
[单片机]
STVP中optionbyte页的ROP影响<font color='red'>FLASH</font>
STM32单片机是怎样执行中断函数中的应用的
在STM32单片机的编程当中,中断函数的名称都是xxx_IRQHandler格式的。那当编译程序的时候是怎么知道这是一个中断函数的呢? 每个中断都是有入口地址的。程序在执行过程中遇到中断的时候,会先判断这个中断的类型,根据类型再到中断向量表中查找,找到之后,根据表中指明的地址,程序就跳到该地址开始执行代码。 ST提供的固件库当中,有提供一个stm32f10x_it.c文件,打开之后会发现里面放的都是些空函数,但是名字都是“xxx_Handler()”格式,需要使用某个中断的时候,在代码中使能该中断,并到这个文件中将中断服务函数添加上,就可以了。 而这些名字就是一个个的中断函数入口地址。在启动代码中便有这些定义。如下图所示:
[单片机]
基于STM32智能马蹄锁设计
1. 前言 设计一款基于单片机的家用马蹄锁,主要用在自行车、共享单车上。 主要要求: 1、手机蓝牙直连控制开关:手机直接连接智能马蹄锁可以控制其开锁关锁的功能。 2、即连即开: 手机端与智能马蹄锁第一次连接成功后可以选择即连即开模式,在之后距离智能马蹄锁一定范围内,智能马蹄锁会自动打开。 3、即走即关:手机端与智能马蹄锁第一次连接成功后可以选择即连即走即关,在之后离开智能马蹄锁一定范围,智能马蹄锁会自动关团。 4、实体触控按键控制开锁手动关锁。当用户无法使用蓝牙功能时,可以使用侧面实体触控按键进行密码解锁。 5、GPRS防盗预警当自行车在智能马蹄锁住的的情况下三轴加速度传感器检测到车辆被长时间移动时会向用户
[单片机]
基于<font color='red'>STM32</font>智能马蹄锁设计
全网最全STM32 HAL的知识总结
ST 为开发者提供了非常方便的开发库:有标准外设库(SPL库)、HAL 库(Hardware Abstraction Layer,硬件抽象层库)、LL 库(Low-Layer,底层库)三种。前者是ST的老库已经停更了,后两者是ST现在主推的开发库。 相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。 通过文字描述可以知道HA
[单片机]
STM32关于USART的问题集锦
STM32F207的串口问题 问: 答1:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTx, ENABLE) for USART1 and USART6 * RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE) for USART2, USART3, UART4 or UART5. * 3、stm32中的串口通信中的USART_WordLength,数据位的长度包不包括开始位哪些? 问:stm32中的串口通信中的USART_WordLength,数据位的长度包不包括开始位哪些? 答:不包括开始位,如果你有 校验(奇 偶)的
[单片机]
VxWorks中怎么从Flash BOOT
作者Email: jinyuhe@163.com 摘要: 本文主要介绍VxWorks系统在MPC860系列处理器的开发中怎么实现去掉BOOT Flash,直接从Flash引导VxWorks的BootRom。 关键词:BOOT Flash,Flash,BootRom 引言 美国WindRiver公司的实时嵌入式系统VxWorks和美国Motorola公司MPC860系列处理器已经广泛的应用在通信行业的通信产品中,在用VxWorks系统进行开发时,会生成两个文件,一个是BootRom文件,此文件类似Windows中的BIOS,是引导文件,完成内存初始化,内核初始化,基本硬件的初始化并最终引导VxWorks系统启动,另外一个是
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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