所有寄存器都需要时钟才能配置吧,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。
任何MCU的任何外设都需要有时钟,8051也是如此;STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。
51单片机不用配置IO时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功耗就降低不了。
例如,某个功能不需要,但是它还是一直运行。
stm32需要配置时钟,就可以把不需要那些功能的功耗去掉。
当你想关闭某个IO的时候,关闭它想对应的时钟使能就是了,不过在51里面,在使用IO的时候是没有设置IO的时钟的,还有在STM32中,有外部和内部时钟之分,关于时钟等好好研究
ARM的芯片都是这样,外设通常都是给了时钟后,才能设置它的寄存器(即才能使用这个外设)。STM32、LPC1XXX等等都是这样。
这么做的目的是为了省电,使用了所谓时钟门控的技术。
这也属于电路里同步电路的范畴:同步电路总是需要1个时钟。
关键字:STM32 配置时钟 配置GPIO
引用地址:
STM32为什么必须先配置时钟再配置GPIO
推荐阅读最新更新时间:2024-03-16 14:58
stm32 串口下载错误解决方法
由于我的J-LINK 坏了,新买的还没到,就用串口工具进行下载。 信息提示框提示下载内容不在0x08000000 与0x20000000范围内,即不在程序FLASH或SRAM上。而读器件信息,清除芯片就没问题,表示我的串口下载工具没有问题。我的IAR是新安装的,由于之前在进行.icf文件进行配置的时候使用的是相对寻址,所以也不存在文件夹目录变更后不能使用的问题。 不放心仍然打开IAR看了下.ICF文件的路径,确认没有问题。又在文件夹中打开,icf文件,确认了下载地址没有问题。编译下载还是提示相同的错误。我就在IAR中编辑选项查看ICF文件,看了一下没有改动保存。再次编译下载问题消失。 所以这个可能是IAR的bug吧,我用的
[单片机]
利用usmart组件对stm32进行调试
一、介绍usmart 二、使用usmart的三个前提 1、封装好正点原子的usmart文件 2、写好串口的hal库回调函数及其中断处理函数 3、是否开启一个定时器中断(最好选是) 开启:1,关闭:0 三、将需要调试的代码usmart_config.c内 首先要包含文件/extern函数,然后放进结构体内 四、在串口调试助手内利用usmart来调试代码 注:带有函数参数的函数调用需要先准备好id
[单片机]
stm32裸机移植FreeModbus
简单记录一下步骤。 官方下载freemodbus-v1.6.zip源码,然后把源码中的modbus文件夹、demoBAREport文件夹导入工程。 先是一波无脑导,把文件夹里所有文件导入。 存储区配置,单片机上定义的起始地址要比实际通信过程中读写的地址+1。 #include mb.h #include mbport.h #include mbutils.h //输入寄存器 #define REG_INPUT_START 1001 #define REG_INPUT_NREGS 2 static USHORT usRegInputStart = REG_INPUT_START; static USHOR
[单片机]
STM32开发 -- 外部中断详解
在讲三轴加速度计的时候,提到外部中断。接下来就看看中断为什么这么配置。 一、外部中断概述 STM32的每个IO都可以作为外部中断输入。 那我们之前讲过的,参看:STM32开发 – GPIO详解 STM32F105RC 一共有4组IO口 一共16X3+3=51个IO GPIOA0~A15 GPIOB0~B15 GPIOC0~C15 GPIOD0~D2 那么它跟中断的关系是什么呢? STM32的中断控制器支持19个外部中断/事件请求: 从图上来看,GPIO 的管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0 ~ 15。 另外四个EXTI线的连接方式如下: ● EXTI线16
[单片机]
关于调试stm32和stm8(51单片机)的i2c和spi协议的之间的区别
在调试STM32的i2c和io口模拟spi协议时发现时序是很关键的。stm32在72M运行下可以实现i2c或者spi协议,但并不代表把相同的代码移植到51单片机上就会成功的跑起来,因为51单片机的速读最块8M,所以在时序上会产生很多大的区别。 经过测试,在stm32上的spi协议时钟线可达到20Khz,移植到51后,频率会降到 10hz。可是尽管把延时调小或者去掉还是无济于事,此时就要加几句把钟线置高置低的语句了 以便增大的速度,后来成功后,测试时钟线的确达到了10Khz左右。 先贴上部分代码 unsigned char ReadRawRC(unsigned char Address) { unsigned char
[单片机]
stm32 rtc 误差实验
1. stm32f103re,使用外部晶振32.768k,没有校准rtc时钟,使用串口打印时间,用带时间戳的串口工具记录串口接收的时间。 2. 测试时间一天。 数据如下: 开始计时:电脑时间 stm32时间 00:03:20 结束计时:电脑时间 stm32时间 25:35:50 历时:电脑 25:32:01:641 stm32时间 25:32:30 3. 结论 单片机快28秒, 28/25=1.12 stm32平均每小时快1.12秒 4. 按照AN2604.pdf描述的原理,RTC 的校准值应在0-127之间。可实现的校准误差对应为0-121ppm。相当于每30天跑快的秒数为0-3
[单片机]
STM32驱动W25X64存储器
W25X64 是华邦公司推出的大容量 SPI FLASH 产品,W25X64 的容量为 64Mbit(8M),该系列还有 W25Q80/16/32 等。W25X16,W25X32,W25X64分别有8192,16384,32768个可编程页,每页256字节,用扇区擦除指令每次可以擦除16页,用块擦除指令每次可以擦除256页,用整片擦除指令既可以擦除整个芯片,W25X16,W25X32,W25X64分别有512,1024,2048个可擦除扇区,或者32,64,128个可擦除的块 W25Q64 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 2.7~3.6V, W25Q64 支持标准的 SPI,还支持双输出/四输
[单片机]