这几天在鼓捣stm32的rtc,先焊了一个板子(从stm家园,www.stmsky.com 弄了几块stmsky001pcb板),试了一下rtc显示时间的程序,ok,兴奋呀!
第二天便有网友在移植rtt系统说板子上的rtc不能起振,感觉很奇怪,一样的板子怎么可能会出现这种情况,赶忙我又试了一下我的板子,奇怪的是,昨天还好好的,今天也是不行了。不能起振了。找原因吧。
于是没有多想,肯定是硬件的原因,因为程序昨天跑的好好的。无外乎 晶振和电容,电容我用的10pf,晶振6p的。什么原因呢? 网友dami也和我一样的板子 他的一直ok 所以问了一下,人家晶振随便从别的板子上搞得就ok,我的就是不行,换了20pf 30pf 电容均不行。只能换晶振了,于是又换了一个新的晶振,一试,哈哈 ok了 于是匆忙下结论 原来是晶振坏了。可是高兴不久,又出现问题了,和以前一样。
没办法,马上看了看st rtc设计的应用笔记,感觉到好像是晶振 震坏了。还是不是很确定问了很多人,包括21ic 香主。提了很多意见,越来越感觉是硬件的问题。于是找了以前认识的用过rtc的朋友 问了一下 他以前也是出现不起振的 后来解决了。和它说明我的问题后,原来和他以前的问题一样“刚焊上 因为晶振热 容易起振 但是放一会 就不行了”和我正装一样 赶忙询问硬件参数值,给了我一个晶振销售商地址,电容用6pf 并联10m电阻 这是他的解决方法。晚上到了家 马上按照他说的焊接,本以为肯定ok了(因为症状一样),哎 这次 刚焊上的都不震了。恼火呀。接连换了好几种硬件组合方案。无功而返。
还好手上有一块开发板 rtc是好的,我先试试,于是下载程序,奇怪 怎么这个也不打印信息,????????? 换了个以前写在这个开发板上的程序(太大 懒得编译) 一看 这个ok啊 难道是程序的问题? 把开发板上的程序 写到核心板 查看寄存器 数值在变? 晶振可以起振!! 怪哉 。
赶忙对照程序,别无它,之用中断里面稍有不同,以前写的 加了RTC_WaitForLastTask();现在的没有,难道是这个的问题? 加上试试先,啊 可以了!!!! 兴奋 气愤呀 2天 原来是软件的原因呀,真害人呀 没改过的软件 开始好使 后来就不行了 这不是搞人吗
赶忙又焊了 一个 一试 ok ok ok
咦 别高兴太早 再拿出来看看 仍是ok 终于解决了
说一下 硬件链接:
6p晶振加两个10p电容 不要并联电阻 并联了反而不起振
========================================END===========================
关键字:stm32 rtc 晶振
引用地址:
stm32 rtc 晶振问题解决
推荐阅读最新更新时间:2024-11-11 10:02
STM32 DMA简述
STM32 DMA简述 **DMA (Direct Memory Access) ** 直接内存存储器,在做数据传输时能够大大减轻CPU的负担。 DMA的作用 DMA提供了一个关于数据的高数传输通道,这个通道不占用CPU的资源。换句话说,通过DMA通道,你在传输大规模数据的时候CPU同时也能够去干其他事。 你可以控制DMA通道的接入口,灵活配置传输的数据源和目的地。以下几个是常用的DMA传输路径: 从外设到内存 从内存A区域传到内存B区域 从一个外设传输到另一个外设 从内存传输数据到外设 .... DMA流程分析 在stm32中,DMA是以类似外设的形式添加到内核之外的,下面我们来看具体的框图: 从上图我们可以看到,DMA通过
[单片机]
STM32 ADC转换中断读取
ADC中断读取方式适用于低频率的ADC采集,而高频率的AD采集必须使用DMA, ADC中断读取的初始化函数只是比上一篇的直接读取方式添加了点中断配置文件,代码如下: static void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO
[单片机]
【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解
前言: 今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5、串口: 使用USART1 PA9,PA10 知识概括: 通过本篇博客您将学到: STM32CubeMX创建串口例程 HAL库UATR函数库
[单片机]
STM32的重映射功能,以ZET6的TIM3_CH2通道从PA7->PB5为例
还需要先提的是,重映射有的可能只适用于与部分STM32芯片。 TIM3_CH2 默认是接在 PA7,可以通过重映射功能,把 TIM3_CH2映射到 PB5 上 重映射控制是由复用重映射和调试 IO 配置寄存器(AFIO_MAPR) 控制。 TIM3_REMAP 是由 这 2 个位控制的。TIM3_REMAP 重映射控制表如下: 默认条件下,TIM3_REMAP 为 00,是没有重映射的,所以TIM3_CH1~TIM3_CH4 分别是接在 PA6、PA7、PB0 和 PB1 上的。 而我们想让 TIM3_CH2 映射到 PB5 上,则需要设置TIM3_REMAP =10,即部分重映射,这里需要注
[单片机]
STM32外部中断详解
一、基本概念 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器。 4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级; 第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级; 第3组
[单片机]
STM32学习笔记——独立看门狗IWDG介绍及配置
STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是在 30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 40Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 看门狗的原理 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号) 下面我们在了解几个与独立看门狗相关
[单片机]
STM32 查看 FLASH 和 RAM 使用情况
1、KEIL MDK 编译后的信息 Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 1)Code 是代码占用的空间; 2)RO-data 是 Read Only 只读常量的大小,如const型; 3)RW-data 是(Read Write)初始化了的可读写变量的大小; 4)ZI-data 是(Zero Initialize) 没有初始化的可读写变量的大小,ZI-data不会被算做代码里因为不会被初始化。 1.1、Flash 占用 在烧写的时候是 FLASH 中的被占用的空间为: Code+RO Data+RW Data 1.2、RAM 内存
[单片机]